2016-09-25 51 views
1

我一直在尋找通過我的老項目的代碼,我發現這一點:SendAsync用的CancellationToken

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

我想知道當它取消了,會發生什麼?

響應中會有什麼?

之後我是否需要致電ThrowIfCancellationRequested,否則會引發異常?

回答

3

我想知道當它被取消時會發生什麼?

standard pattern是取消返回的任務。這會導致你的await籌集OperationCanceledException

迴應會是什麼?

將不存在響應對象,因爲在該點之前拋出異常。

1

你需要調用它

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

然後,它會拋出類型OperationCanceledException當你將請求取消的異常。

+0

所以'SendAsync'不會拋出任何異常?爲什麼它沒有記錄在任何地方...... – sooqua