2011-01-26 36 views
5

我有一个父窗口窗体应用程序和一个孩子commandline.exe。对匿名管道使用修改后的MSDN示例(h ttp://msdn.microsoft.com/en-us/library/bb546102.aspx),我可以将父对象的序列化对象发送给子对象。孩子可以对对象进行反序列化并读取值。.net c#匿名管道 - 被误解?

也许我误解了匿名管道的机制,但是我期待管道保持打开状态,直到我关闭它为止,以便在我喜欢时能够发送另一个对象,但是在发送/接收对象之后管道不再连接(由IsConnected属性确定)。

目前,一旦一个对象从父母发送到孩子,管道关闭(而不是“我”)。我在本地维护对原始pipeHandle的引用,但似乎无法重新打开管道。我应该能够还是不应该首先关闭?我不明白我怎么能打开另一个新的管道,因为我无法将父句柄从客户端传递给客户端(初始管道句柄首先通过参数传递)

如何从父母给孩子?

我知道我可以使用命名管道,但MSDN建议在同一本地计算机上使用IPC的匿名管道。

非常感谢

阿尼

+1

请张贴您的代码。 – 2011-01-26 17:28:43

回答

7

如果你正在做的一样MSDN样品你关闭的StreamWriter(与using声明)中,并closing a StreamWriter关闭底层流。只要流保持打开状态,管道就会保持打开状态,所以如果您不想关闭它,请不要关闭流,也不要关闭流,也不要关闭流。