如何检测HttpClient.CancelPendingRequests是否用于取消待处理的请求?

时间:2016-01-29 13:43:56

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

应用程序设置

  1. 我正在使用HttpClient从Windows窗体应用程序向REST服务发出多个异步POST请求。
  2. 同时响应从REST服务获取,应用程序显示正在处理... 窗口,其中包含取消按钮。
  3. 现在,当用户按下取消按钮时,我正在使用HttpClient.CancelPendingRequests取消正在进行的请求。
  4. HttpClient.CancelPendingRequests方法电话上使用TaskCanceledException投掷PostAsync
  5. 查询

    1. 我是否有任何方法可以检测TaskCanceledException由于HttpClient.CancelPendingRequests的调用而被抛出而不是由于任何其他原因(如超时)
    2. 是否有其他方法可以实现类似的取消功能?
    3. 由于

1 个答案:

答案 0 :(得分:3)

捕获异常并检查TaskCanceledException.CancellationToken.IsCancellationRequested属性。如果为true,则可以确定它是明确请求的取消与超时。

话虽如此,请谨慎使用此解决方案并进行一些测试。正如我discovered一段时间之前,有些情况下你会认为应该设置这个位而不是。