2 回答

TA貢獻1811條經驗 獲得超6個贊
用WaitOne方法,就可以阻塞啦.. 不知道,你想怎么用,如果你希望的是,當通知有數據需要處理的時候,可以用Queue,然后用While去判斷這個Queue的長度是否大于0,如果是,就Set, 反之WaitOne .....

TA貢獻1789條經驗 獲得超8個贊
你只需要在你的線程函數里面有一個循環,每次先等待某個信號量就可以了了。 2008-08-09 更新: 昨天奧運開幕了~~~~ 我并不確定.NET是否提供了默認的支持。詳細的方案,還是要多看看MSDN。找找上面有沒有特定的解決方案。 如果我來做,我會這樣做: 1. 將線程中需要執行的動作劃分為多個單元。 一般情況下,長時間執行的線程中都會有循環或多個嵌套的循環。循環體的開始部分應該就是我所說的單元的邊界。 2. 定義一個信號量 在啟動一個線程的時候,為這個線程定義一個信號量。 3. 在單元的分界點檢查信號量 在每個單元的開始處,檢查信號量,如果信號量被設置,設置一個循環不斷的檢查該信號,直到信號量被復位,再繼續開始這個單元的執行。 因此,如果你希望能夠產生立刻中斷的感覺,只需要將執行單元劃分的足夠細小。就可以了。其中需要注意的是:在循環檢查信號量的循環體中,最好讓線程Sleep一下。否則,會CPU占用率很高。 思路大概如此,具體的代碼實現,因為很久沒有寫過這方面的代碼了,就不花時間去寫和調試了。多看看MSDN,應該很容易實現上面的思路的。有什么問題我們可以再討論(給我發短消息:))。
- 2 回答
- 0 關注
- 1038 瀏覽
添加回答
舉報