.net c#匿名管道 - 被误解?

时间:2011-01-26 17:23:48

标签: c# .net pipe

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

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

此时,一旦物体从父母发送到儿童,管道就会关闭(而不是“我”)。我在本地维护对原始pipeHandle的引用,但似乎无法重新打开管道。我是否能够或者不应该首先关闭?我不知道如何打开另一个新管道,因为我无法将句柄从父级传递给客户端(初始管道句由第一个实例中的args传递)

如何将父母的另一个对象发送给孩子?

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

非常感谢

阿尼

1 个答案:

答案 0 :(得分:7)

如果您在MSDN示例中执行类似操作,则关闭StreamWriter(使用using语句),closing a StreamWriter关闭基础流。只要流保持打开,管道就会保持打开状态,因此如果您不想关闭它,请不要关闭流,也不要关闭StreamWriter