作者scottzz (无心工作,等待机会)
看板C_Sharp
标题Re: [问题] 该如何等一个子函数做完事情呢?
时间Tue May 25 08:32:38 2010
※ 引述《james732 (好人超)》之铭言:
: ※ 引述《liaommx (Orz)》之铭言:
: : 我的程式逻辑是这样的
: : do
: : {
: : switch(int)
: : case 1:
: : A();
: : case 2:
: : B();
: : tx.enable=true;
: : C();
: : default:
: : break;
: : }while(true)
: : 我B和C的子程式中间,有一个tx.enable要定时做100次的某件事情(timer)
: : 但是要等B完做tx,
: : tx做完100次才进到C这个子程式,
: : 请问这边该怎麽做比较适合呢?
: : 直接选tx.enable,
: : 这样整个逻辑会同时做下去,
: : 我这个逻辑是有前後关系的.
: : 谢谢大家,
: 我的想法是这样的:
: 准备一个 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.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.221.216.223