作者scottzz (无心工作,等待机会)
看板C_Sharp
标题Re: [问题] 该如何等一个子函数做完事情呢?
时间Tue May 25 09:24:44 2010
※ 引述《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