【问题标题】:How to detect if HttpClient.CancelPendingRequests was used to cancel pending requests?如何检测 HttpClient.CancelPendingRequests 是否用于取消挂起的请求?
【发布时间】:2016-01-29 13:43:55
【问题描述】:

应用设置


  1. 我正在使用HttpClient 从 Windows 窗体应用程序向 REST 服务发出多个异步 POST 请求。
  2. 同时,从 REST 服务获取响应时,应用程序会显示一个带有 Cancel 按钮的 Processing... 窗口。
  3. 现在,当用户按下 取消 按钮时,我正在使用 HttpClient.CancelPendingRequests 取消正在进行的请求。
  4. PostAsync 方法调用上使用HttpClient.CancelPendingRequests 抛出TaskCanceledException

查询

  1. 我有什么方法可以检测到 TaskCanceledException 是由于调用 HttpClient.CancelPendingRequests 而不是由于任何其他原因(如超时)而引发的
  2. 还有其他方法可以实现类似的取消功能吗?

谢谢


【问题讨论】:

    标签: c# parallel-processing dotnet-httpclient cancellation request-cancelling


    【解决方案1】:

    捕获异常并检查TaskCanceledException.CancellationToken.IsCancellationRequested 属性。如果为真,您可以相当肯定这是一个明确请求的取消与超时。

    话虽如此,请谨慎使用此解决方案并进行一些测试。正如我不久前的discovered 一样,在某些情况下,您会认为应该设置该位,但事实并非如此。

    【讨论】:

    • 我不认为这是正确的。 CancellationToken.IsCancellationRequested 简单看一下 CancellationTokenSource.IsCancellationRequsted。
    猜你喜欢
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多