ソケットから読み取る C# のコードがあります。相手がなぜか反応しない。NetworkStream.Read
メソッドのデバッガーで立ち往生しています。デバッガーを壊しても、まだそこにとどまっています。プログラム全体を終了せずに接続を再確立したい。デバッガーにスキップするように指示するにはどうすればよいRead
ですか?
1 に答える
0
読み取りを行うときにデータが利用可能かどうかを確認していますか? MSDNの例は次のようになります。
do
{
numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
// other stuff
}
while(myNetworkStream.DataAvailable);
利用可能なデータがない場合、これはスキップする必要があると思います。私はほとんど経験がありNetworkStream
ませんが、おそらくあなたが直面している問題は関係なく発生するでしょう.
その場合、ストリームがブロックされていてもアプリケーションを続行できるように、非ブロッキング呼び出しにしたいようです。(これはおそらく、多くの理由から良い考えです。) したがって、別のスレッドでストリームから読み取るのがよいでしょう。これを行う方法は、使用している .NET のバージョンによって大きく異なります。
于 2013-05-30T12:07:55.107 に答える