天天看點

《C#多線程程式設計實戰(原書第2版)》——2.7 使用CountDownEvent類

本節書摘來自華章出版社《c#多線程程式設計實戰(原書第2版)》一書中的第2章,第2.7節,作者(美)易格恩·阿格佛溫(eugene agafonov),黃博文 黃輝蘭 譯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

本節将描述如何使用countdownevent信号類來等待直到一定數量的操作完成。

為了學習本節,你需要安裝visual studio 2015。除此之外無需其他準備。本節的源代碼放置在booksampleschapter2recipe6目錄中。

請執行以下步驟來了解countdownevent類的使用:

1.啟動visual studio 2015。建立一個c#控制台應用程式項目。

2.在program.cs檔案中加入以下using指令:

《C#多線程程式設計實戰(原書第2版)》——2.7 使用CountDownEvent類

3.在main方法下面加入以下代碼片段:

《C#多線程程式設計實戰(原書第2版)》——2.7 使用CountDownEvent類
《C#多線程程式設計實戰(原書第2版)》——2.7 使用CountDownEvent類

4.在main方法中加入以下代碼片段:

《C#多線程程式設計實戰(原書第2版)》——2.7 使用CountDownEvent類

5.運作程式。

當主程式啟動時,建立了一個countdownevent執行個體,在其構造函數中指定了當兩個操作完成時會發出信号。然後我們啟動了兩個線程,當它們執行完成後會發出信号。一旦第二個線程完成,主線程會從等待countdownevent的狀态中傳回并繼續執行。針對需要等待多個異步操作完成的情形,使用該方式是非常便利的。

然而這有一個重大的缺點。如果調用_countdown.signal()沒達到指定的次數,那麼_countdown.wait()将一直等待。請確定使用countdownevent時,所有線程完成後都要調用signal方法。