作者kiwi0801 (学长姊好阿)
看板C_Sharp
标题[问题] timer的问题
时间Wed Oct 20 23:37:34 2010
大家好
现在写了一个程式
其中主视窗产生五个子视窗
然後每个子视窗有个timer负责监控文字档
当文字档发生预期中的讯号的时候做出动作
最後再把参数丢回给主视窗 由主视窗将动作写回资料库
并在datagridview上显示
因为子视窗的timer interval 大概是设500ms~1000ms
现在发生的情形是我有个时间点很多子视窗会同时动作
触发方式是当datetime.hour,minute,second都与我设定的一样
但好像会因为其中一个子视窗先写入後(可能是写入资料库时间过长),
其他子视窗没办法做
等到他们可以做的时候时间比对又过了
所以会漏掉没执行动作
想问大家 一般遇到这情形要怎麽做
是要建立thread来更新资料库吗?
谢谢大家耐心看完^^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.33.225.222
1F:→ james732:把主视窗的接受参数与写入资料库交由不同的Thread负责? 10/20 23:40
2F:→ kiwi0801:好 我试试看 10/20 23:40
3F:→ Elly:先把资料存在主视窗,再让主视窗慢慢一个个处理 10/21 19:24
4F:→ kiwi0801:不过这样事件是由子视窗触发 那是要存完参数 10/22 11:28
5F:→ kiwi0801:然後主视窗隔一段时间就来收集吗? 10/22 11:29
6F:→ kiwi0801:刚刚试着在子视窗的timer事件触发就建立thread, 10/22 11:33
7F:→ kiwi0801:好像等很久都没更新资料库 10/22 11:33
8F:→ kiwi0801:解决了 最後是用子视窗建立thread去呼叫主视窗的方法来 10/22 14:02
9F:→ kiwi0801:更新资料库^^ 10/22 14:02
10F:→ Elly:像你问的这种东西运用范围还蛮广的,我是建议你可以用驻列处理 10/22 19:55
11F:→ Elly:只要有讯息,就先在主视窗排队,顺便叫一下主视窗处理,如果主视 10/22 19:55
12F:→ Elly:窗本来就在处理,在处理完当前的会再扫一次是否还有要处理的 10/22 19:56
13F:→ Elly:如果主视窗在休息了,这时就会被你叫起来作事 10/22 19:56
14F:→ Elly:排队的作法在金融业之类有事要叫中央主机处理时,都会用,免得 10/22 19:57
15F:→ Elly:中央主机连线塞暴 10/22 19:58
16F:→ kiwi0801:喔喔 感谢e大的建议 用queue好像也不错 也来试写看看 10/23 20:03