2

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

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

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

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

任何人请帮忙!

4

1 回答 1

3

没关系。

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

解决方案是

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

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

于 2012-05-09T16:15:24.100 回答