我构建了两个应用程序。一个是客户端,另一个是服务器。
他们通过命名管道进行通信。客户端创建NamedPipeClientStream。 除非服务器关闭连接或服务器应用程序终止,否则一切正常。
终止后,客户端部分上的管道流将IsConnected属性设置为false。 还行吧。但是,如果我尝试重新打开NamedPipeClientStream,它永远不会成功。 重新启动服务器之后,我希望客户端打开连接但这种情况永远不会发生。
每次尝试重新连接时都会引发TimeOutException。 唯一的解决方案是退出应用程序并再次启动它。 但这对我来说不是一个选择。
任何人都请帮忙!
答案 0 :(得分:2)
没关系。
问题在于在断开与服务器的连接后没有关闭clinet端的读取管道。
解决方案是
try{
while(true){
... Reading from the PIPE ...
}
}
finally{
pipeStream.Close();
pipeStream.Dispose();
IsRunning = false;
}
永远不要忘记关闭和处理流量!!!