应用程序设置
- 我正在使用HttpClient从Windows窗体应用程序向REST服务发出多个异步POST请求。
- 同时,从 REST 服务获取响应时,应用程序会显示一个带有"取消"按钮的"正在处理..."窗口。
- 现在,当用户按下"取消"按钮时,我正在使用 HttpClient.CancelPendingRequests 来取消正在进行的请求。
- 使用 HttpClient.CancelPendingRequests 会在 PostAsync mthod 调用上抛出 TaskCanceledException。
查询
- 有什么方法可以检测到由于调用HttpClient.CancelPendingRequests而不是由于任何其他原因(如超时)而抛出TaskCanceledException?
- 有没有其他方法可以实现类似的取消功能?
谢谢
捕获异常并检查 TaskCanceledException.CancellationToken.IsCancellationRequested
属性。如果为 true,则可以相当确定这是显式请求的取消与超时。
话虽如此,请谨慎使用此解决方案并进行一些测试。正如我不久前发现的那样,在某些情况下,您会认为应该设置该位,而事实并非如此。