2011-12-28 211 views
1

我有2個進程WriterProc和ReaderProc。如何在C#中進行進程間通信時進行進程間通信?

WriterProc只寫並且ReaderProc只讀。我可以使用命名管道進行通信,但問題是ReaderProc在編寫器寫入時可能不活動,反之亦然。

兩者都可以同時處於活動狀態,因此可能需要寫入和讀取之間的同步。

在c#4中會有什麼建議的方式?

+0

什麼樣的數據被讀取/寫入? – ken2k 2011-12-28 14:53:26

+1

所以你正在尋找某種「持久的IPC」?在讀者和作者之間使用文件IMO *或*代理。 – 2011-12-28 14:53:58

回答

2

Message Queuing服務旨在用於像您這樣的情況。它們提供了有保證的消息傳遞,因此如果作者在讀者沒有運行的情況下忙於書寫,讀者在啓動之後會發現一個充滿消息的隊列。

+0

我們可以使用像MappedFiles這樣的低級別的東西嗎? – Rohit 2011-12-28 15:42:59

+0

@Rohit在任何較低級別的應用程序中,您最終都會重新實現持久性消息的功能,因爲您可能會看到很多特殊情況(讀取器崩潰,寫入器崩潰,計算機重新引導,以至僅舉幾例)。您當然可以通過內存映射文件進行通信,甚至通過常規文件進行通信。但是,爲了實現有保證的交付,您需要考慮的同步問題的數量是巨大的。 – dasblinkenlight 2011-12-28 15:50:58

0

如何使他們WCFs。

作者WCF將發信號讀取器WCF停止讀取,當它要讀取,然後寫入完成後,信號。