SendAsync with CancellationToken

时间:2016-09-25 10:45:09

标签: c#

我正在查看旧项目的代码,我发现了这个:

private async void send(HttpRequestMessage request, CancellationToken cancellationToken)
{
    HttpResponseMessage response = await _client.SendAsync(request, cancellationToken);
    //...
}

我想知道它被取消后会发生什么?

回复中会有什么?

之后我是否需要致电ThrowIfCancellationRequested,否则会引发异常?

2 个答案:

答案 0 :(得分:3)

  

我想知道它被取消后会发生什么?

standard pattern将取消返回的任务。这会导致await提出OperationCanceledException

  

回复中会有什么?

没有响应对象,因为在该点之前抛出了异常。

答案 1 :(得分:2)

您需要像这样调用它

...
cancelToken.ThrowIfCancellationRequested();
HttpResponseMessage response = await _client.SendAsync(request, cancellationToken);
...

然后,当您请求取消时,它将抛出OperationCanceledException类型的异常。