我正在尝试从ReadAsync
为NetworkStream
方法添加“超时”。
我想在特定时间后取消ReadAsync
。
例如:
ctsTimeout.CancelAfter(10);
int bytesRead = await nsStream.ReadAsync(newArr, 0, newArr.Length, ctsTimeout.Token);
但该方法仍在等待服务器的响应。
是否可以在读取状态下取消此方法?
答案 0 :(得分:1)
NetworkStream
(或Stream
继承)并不真正支持取消。肯定,ReadAsync
方法接受取消令牌;但这真的只是让你知道在阅读完成之前是否要求取消。 ReadAsync
实际上只包裹BeginRead
和EndRead
- 它们无法取消读取操作。
要真正取消阅读,您需要处置或Close
NetworkStream
对象。