0

私はインターネットストリームを持っていて、そこからリーダーを作成しています

var reader = new BinaryReader(stream);

その後、「同期ワード」を検索するためにバイトを読み取っています

if (reader.ReadByte() != magic[i++])

しかし、時々私はに問題がありReadByte()ます。リーダーがストリームからバイトを読み取れない場合は例外がスローされると予想しましたが、何もスローしません。(サーバーはシャットダウンされません。バイトを提供しないでください)。

だから私の質問は-このメソッドをタイムアウトする方法は?CancellationTokenでTPLを使用できますが、必要なときにメソッドReadByteをキャンセルする方法がわかりません。

4

1 に答える 1

3

これがからのものであることがわかったので、ストリームをリクエストする前にTcpClient設定することをお勧めします。TcpClient.ReceiveTimeoutこれにより、読み取り呼び出しが適切にタイムアウトするはずです。

(一方、TcpClientWP7で利用できるとは思わなかったので、どのように使用しているかわかりません...)

于 2013-01-17T11:39:03.730 に答える