2016-11-17 8 views
0

ReadAsync 메서드에 대한 "제한 시간"을 NetworkStream에서 추가하려고합니다.NetworkStream ReadAsync cancellation

특정 시간 후에 ReadAsync을 취소하고 싶습니다. 예를 들어

:

ctsTimeout.CancelAfter(10); 

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

그러나이 방법은 여전히 ​​서버의 응답을 기다리고 있습니다.

읽기 상태에서이 방법을 취소 할 수 있습니까?

답변

1

NetworkStream (또는 상속으로 Stream)은 실제로 취소를 지원하지 않습니다. ReadAsync 메서드는 취소 토큰을받습니다. 하지만 실제로는 읽기가 완료되기 전에 취소가 요청되었는지 알 수 있습니다. ReadAsync은 실제로는 BeginReadEndRead을 랩핑하며 읽기 작업을 취소 할 방법이 없습니다.

실제로 읽은 내용을 취소하려면 CloseNetworkStream 개체를 처분해야합니다.