Re: [問題] 該如何等一個子函數做完事情呢?
※ 引述《scottzz (無心工作,等待機會)》之銘言:
: ※ 引述《liaommx (Orz)》之銘言:
: : 請問一下,這個寫法雖然compiler會過,
: : 可是實際點button的時候會整個卡住,
: : 不知道會是甚麼原因呢?
: 說明一下,AutoResetEvent 類別的Waitone方法會Hold整個Thread.
: 因此,我是預設您的Timer物件是用 System.Timers.Timer 去宣告出來的
: 而非使用控制項的Timer. 因為System.Timers.Timer 類別是會每次時間
: 一到就產生一個Thread去執行Timer內部動作.因此就算主Thread被
: waitone方法所鎖住不動,但Timer還是會定時去動作的.因此只要count數
: 一到再Set時, 就能解開主Thread的鎖定繼續往下Go.
可以順勢再問一個問題嗎?
是這樣的,之前做Sap2000的Plugins,檢核橋梁的鋼箱梁Element的斷面力量,
剛好每個Element至少需匯出兩個斷面力,想說可以用BackgroundWoker來多工處理,
實驗結果雙核CPU的使用率將近99%,但只提昇約20~90%效率(4核CPU才能超過70%),
我猜應該是用BK(BackgroundWoker)時分出兩個Threads: BKa、BKb
再利用Sleep來等這兩個Worker結束以換下一個Element:
while(BKa.isBusy || BKb.isBusy) Threads.Sleep(0);
看到scottzz的建議很興奮,
如果用BackgroundWorker開的子方法也可以用AutoResetEvent
來hold主Thread嗎?
效率應該會比Sleep優吧!等我有空再去試試看,如果可行先謝了!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.43.126.69
→
06/13 21:28, , 1F
06/13 21:28, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 7 之 7 篇):