典型的Web API DelegatingHandler实现看起来像这样......
protected async override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
// TODO: Do work before inner handler here
// Call the inner handler.
var response = await base.SendAsync(request, cancellationToken);
// TODO: Do work _after_ inner handler here
return response;
}
处理 CancellationToken.IsCancellationRequested == true 的首选方法是什么?
我应该:
答案 0 :(得分:5)
Cancellation semantics会抛出异常(例如CancellationToken.ThrowIfCancellationRequested
)。
如果您没有任何异步工作要做(base.SendAsync
除外),那么您可以忽略该令牌。
请注意,如果令牌被取消,await base.SendAsync
可能会引发异常。该异常将自然传播,但如果您无论是否取消都必须进行任何清理,请使用using
或finally
阻止。