连接丢失后重新连接到NamedPipeClientStream(.NET)

时间:2012-05-09 15:40:11

标签: .net named-pipes

我构建了两个应用程序。一个是客户端,另一个是服务器。

他们通过命名管道进行通信。客户端创建NamedPipeClientStream。 除非服务器关闭连接或服务器应用程序终止,否则一切正常。

终止后,客户端部分上的管道流将IsConnected属性设置为false。 还行吧。但是,如果我尝试重新打开NamedPipeClientStream,它永远不会成功。 重新启动服务器之后,我希望客户端打开连接但这种情况永远不会发生。

每次尝试重新连接时都会引发TimeOutException。 唯一的解决方案是退出应用程序并再次启动它。 但这对我来说不是一个选择。

任何人都请帮忙!

1 个答案:

答案 0 :(得分:2)

没关系。

问题在于在断开与服务器的连接后没有关闭clinet端的读取管道。

解决方案是

try{
   while(true){
      ... Reading from the PIPE ...
   }
}
finally{
 pipeStream.Close();
 pipeStream.Dispose();
 IsRunning = false;
}

永远不要忘记关闭和处理流量!!!