2012-12-12 100 views
1

可能重複:
Is there a way to wake a sleeping thread?如何喚醒C#.net中另一個線程的睡眠線程?

我有一個Windows窗體在C#.net應用程序。我正在使用namedpipes與C++應用程序進行通信。通信部分運行良好。 在表單加載事件中,我啓動了兩個後臺線程,其中一個用於接收。接收線程處於無限循環中。當沒有要讀取的數據時,它休眠,當數據到達時,它讀取它,然後將它推入消息隊列(全局創建)。我想使用我在創建時加載的表單讀取消息隊列並更新UI時創建的另一個。我想要的是,一旦第二個線程被創建,它就應該進入無限的睡眠狀態,當閱讀線程讀取4個或更多的消息時,它應該產生某種信號來喚醒睡眠線程。那麼線程將處理消息隊列直到其爲空,然後返回到休眠狀態,直到它從接收線程接收到另一條消息。

+0

做*不*睡覺,擺脫那。線程總是調用管道流的Read()方法。 –

+0

這就是我的想法,但我想處理收到的數據,我不想錯過任何接下來的數據。所以我希望處理由另一個線程完成,只有當該線程接收到某個東西時纔會喚醒。 –

回答