2

2 つのアプリケーションを作成しました。1 つはクライアントで、もう 1 つはサーバーです。

それらは名前付きパイプを介して通信しています。クライアントは 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 に答える