看板 C_Sharp 關於我們 聯絡資訊
※ 引述《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