2016-06-29 78 views
0

.Net框架中是否有任何實現管道的類,但用於線程間通信而不是進程間通信? System.IO.Pipes似乎矯枉過正。類似於C#中用於線程間通信的管道類

具體而言,我正在尋找的是允許單個讀取器線程和單個寫入器線程的東西,並且允許在管道的讀取和寫入端都阻塞IO。 System.IO.Pipes.PipeStream似乎過度。

此外,理想情況下,作者將能夠「寫入」管道的異常,這將導致任何讀取器喚醒,並且任何額外的讀取將通過管道拋出異常「推送」。

請注意,我正在尋找實現System.IO.Stream接口的東西。我嚴格地試圖發送數據流,不一定是「消息」。想要一個流接口的原因是我希望讀者能夠像處理其他任何源一樣處理傳入的數據。

+0

管道是流,您可以使用MemoryStream進行線程通信。例外情況是應用程序級消息傳遞。 – jdweng

+0

其中一個同步收藏是否符合您的要求?想一想https://msdn.microsoft.com/en-us/library/system.collections.concurrent(v=vs.110).aspx命名空間 –

+0

如果您需要內部線程,那麼event aggregator https:// msdn .microsoft.com/en-us/library/ff921122.aspx –

回答

1

使用顯示器。它有一個Wait()方法的讀者和Pulse()作家的方法。

通過作爲參數傳遞的對象完成通信。