Re: [問題] 該如何等一個子函數做完事情呢?

看板C_Sharp作者 (無心工作,等待機會)時間14年前 (2010/05/25 09:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/7 (看更多)
※ 引述《liaommx (Orz)》之銘言: : ※ 引述《scottzz (無心工作,等待機會)》之銘言: : : 其實跟WaitHandle概念是一樣,可以使用AutoResetEvent 類別. : : 宣告一個 AutoResetEvent are = new AutoResetEvent(false); : : 在tx.enable = true;之後 : : 將 are.waitone(); 使程序不往下Go. : : 待 timer內跑完100次後 再將are.set(); 讓主執行緒再往下Go. : 請問一下,這個寫法雖然compiler會過, : 可是實際點button的時候會整個卡住, : 不知道會是甚麼原因呢? 說明一下,AutoResetEvent 類別的Waitone方法會Hold整個Thread. 因此,我是預設您的Timer物件是用 System.Timers.Timer 去宣告出來的 而非使用控制項的Timer. 因為System.Timers.Timer 類別是會每次時間 一到就產生一個Thread去執行Timer內部動作.因此就算主Thread被 waitone方法所鎖住不動,但Timer還是會定時去動作的.因此只要count數 一到再Set時, 就能解開主Thread的鎖定繼續往下Go. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.221.216.223
文章代碼(AID): #1B-oRUyb (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1B-oRUyb (C_Sharp)