2

应用程序设置


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

询问

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

谢谢


4

1 回答 1

3

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

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

于 2016-01-30T17:18:25.303 回答