NetworkStream ReadAsync取消

时间:2016-11-17 13:35:44

标签: c# sockets asynchronous networkstream cancellation

我正在尝试从ReadAsyncNetworkStream方法添加“超时”。

我想在特定时间后取消ReadAsync

例如:

ctsTimeout.CancelAfter(10);

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

但该方法仍在等待服务器的响应。

是否可以在读取状态下取消此方法?

1 个答案:

答案 0 :(得分:1)

NetworkStream(或Stream继承)并不真正支持取消。肯定,ReadAsync方法接受取消令牌;但这真的只是让你知道在阅读完成之前是否要求取消。 ReadAsync实际上只包裹BeginReadEndRead - 它们无法取消读取操作。

要真正取消阅读,您需要处置或Close NetworkStream对象。