Re: [問題] 該如何等一個子函數做完事情呢?
※ 引述《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
討論串 (同標題文章)