0

ソケットから読み取る C# のコードがあります。相手がなぜか反応しない。NetworkStream.Readメソッドのデバッガーで立ち往生しています。デバッガーを壊しても、まだそこにとどまっています。プログラム全体を終了せずに接続を再確立したい。デバッガーにスキップするように指示するにはどうすればよいReadですか?

4

1 に答える 1

0

読み取りを行うときにデータが利用可能かどうかを確認していますか? MSDNの例は次のようになります。

do
{
    numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
    // other stuff
}
while(myNetworkStream.DataAvailable);

利用可能なデータがない場合、これスキップする必要があると思います。私はほとんど経験がありNetworkStreamませんが、おそらくあなたが直面している問題は関係なく発生するでしょう.

その場合、ストリームがブロックされていてもアプリケーションを続行できるように、非ブロッキング呼び出しにしたいようです。(これはおそらく、多くの理由から良い考えです。) したがって、別のスレッドでストリームから読み取るのがよいでしょう。これを行う方法は、使用している .NET のバージョンによって大きく異なります。

于 2013-05-30T12:07:55.107 に答える