作者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