作者liaommx (Orz)
看板C_Sharp
标题Re: [问题] 该如何等一个子函数做完事情呢?
时间Tue May 25 08:52:44 2010
※ 引述《scottzz (无心工作,等待机会)》之铭言:
: ※ 引述《james732 (好人超)》之铭言:
: : 我的想法是这样的:
: : 准备一个 mutex, 一开始把它上锁
: : 在 C() 的一开始对这个 mutex 再一次上锁
: : 因为已经锁着,C() 无法再锁一次,所以会停下来等待解锁
: : 然後在 timer() 执行一百次後,把 mutex 给解锁
: : 这个时候 C() 便可以取得 mutex,并且继续执行了
: 其实跟WaitHandle概念是一样,可以使用AutoResetEvent 类别.
: 宣告一个 AutoResetEvent are = new AutoResetEvent(false);
: 在tx.enable = true;之後
: 将 are.waitone(); 使程序不往下Go.
: 待 timer内跑完100次後 再将are.set(); 让主执行绪再往下Go.
请问一下,这个写法虽然compiler会过,
可是实际点button的时候会整个卡住,
不知道会是甚麽原因呢?
--
AutoResetEvent are = new AutoResetEvent(false);
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("start");
timess = 0;
timer1.Enabled = true;
are.WaitOne();
MessageBox.Show("done");
}
private void timer1_Tick(object sender, EventArgs e)
{
timess++;
if (timess > 10)
{
are.Reset();
timer1.Enabled = false;
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.227.253
1F:→ chancewen:GUI Invoke 05/25 18:31