2016-11-17 76 views
0

我想從NetworkStreamReadAsync方法添加「超時」。NetworkStream ReadAsync取消

我想在特定時間後取消ReadAsync

例如:

ctsTimeout.CancelAfter(10); 

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

但是該方法仍然在等待來自服務器的響應。

在閱讀狀態下是否可以取消該方法?

回答

1

NetworkStream(或Stream繼承)並不真正支持取消。 ReadAsync方法接受取消令牌,當然;但這實際上只是讓你知道在讀取完成之前是否要求取消。 ReadAsync真的只是包裝BeginReadEndRead - 它提供了無法取消讀取操作。

要真正取消閱讀,您需要處置或CloseNetworkStream對象。