当前位置:  开发笔记 > 编程语言 > 正文

Web API:使用CancellationToken的DelegatingHandler

如何解决《WebAPI:使用CancellationToken的DelegatingHandler》经验,为你挑选了1个好方法。

典型的Web API DelegatingHandler实现看起来像这样......

protected async override Task 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的首选方法是什么?

我是不是该:

生成错误响应并打破委托链?

什么都不做(如上所述)?

选项'C'?

Stephen Clea.. 5

取消语义是在取消令牌时抛出异常(例如CancellationToken.ThrowIfCancellationRequested).

如果您没有任何异步工作要做(除了base.SendAsync),那么您可以忽略该令牌.

请注意,await base.SendAsync如果令牌被取消,可能会引发异常.异常将自然传播,但如果您有任何必须进行的清理,无论取消,请使用usingfinally阻止.



1> Stephen Clea..:

取消语义是在取消令牌时抛出异常(例如CancellationToken.ThrowIfCancellationRequested).

如果您没有任何异步工作要做(除了base.SendAsync),那么您可以忽略该令牌.

请注意,await base.SendAsync如果令牌被取消,可能会引发异常.异常将自然传播,但如果您有任何必须进行的清理,无论取消,请使用usingfinally阻止.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有