2016-11-17 7 views
0

ReadAsyncメソッドの「タイムアウト」をNetworkStreamから追加しようとしています。NetworkStream ReadAsyncのキャンセル

特定の時間の後にReadAsyncをキャンセルします。例えば

ctsTimeout.CancelAfter(10); 

int bytesRead = await nsStream.ReadAsync(newArr, 0, newArr.Length, ctsTimeout.Token); 

しかし、この方法は、まだサーバからの応答を待っています。

このメソッドを読み取り状態でキャンセルすることはできますか?

答えて

1

NetworkStream(または継承によるStream)は実際にキャンセルをサポートしていません。 ReadAsyncメソッドはキャンセルトークンを受け取ります。しかし、実際には、読み込みが完了する前にキャンセルが要求されたかどうかを知ることができます。 ReadAsyncは実際にはBeginReadEndReadをラップするだけで、読み取り操作をキャンセルすることはできません。

実際に読み取りをキャンセルするには、CloseNetworkStreamオブジェクトを処分する必要があります。

関連する問題