我开始使用System.Net.Http.HttpClient类,这是一个很好的类。现在我想让我的程序用户有能力取消操作,例如如果一堆HTTP请求需要太长时间才能完成。因此,我自然而然地遇到了CancellationTokenSource类,并修改了对HttpClient异步方法的调用,以便向它们传递CancellationToken。在我的UI代码中,我现在可以“取消该令牌”,并且确实会打断正在进行的任何HTTP请求。
然而,我没有预料到的是,这会导致被打断的方法抛出TaskCanceledException异常。
我的问题是:我查看了HttpClient的MSDN文档,没有提到这个异常。我认为这是因为这是任何接受CancellationToken的异步方法的常见行为,但到目前为止,我没有找到太多关于它的信息。您能否确认或否定我的假设,并指向相关文档?
我的“真正的问题”是,我是否正确使用了CancellationToken机制,也就是说,这个异常是否应该发生,还是我做错了什么?
如果这个异常应该发生,并且它是我可以依赖的机制,那么它将简化我的代码。现在,我在每次调用HttpClient异步方法后测试我的令牌的IsCancellationRequested属性,以确定我的方法是否应该继续执行或返回,但是有了这个异常,所有额外的代码都变得无意义了。
我使用以下语句取消令牌:
然而,我没有预料到的是,这会导致被打断的方法抛出TaskCanceledException异常。
我的问题是:我查看了HttpClient的MSDN文档,没有提到这个异常。我认为这是因为这是任何接受CancellationToken的异步方法的常见行为,但到目前为止,我没有找到太多关于它的信息。您能否确认或否定我的假设,并指向相关文档?
我的“真正的问题”是,我是否正确使用了CancellationToken机制,也就是说,这个异常是否应该发生,还是我做错了什么?
如果这个异常应该发生,并且它是我可以依赖的机制,那么它将简化我的代码。现在,我在每次调用HttpClient异步方法后测试我的令牌的IsCancellationRequested属性,以确定我的方法是否应该继续执行或返回,但是有了这个异常,所有额外的代码都变得无意义了。
我使用以下语句取消令牌:
myCancellationTokenSource.Cancel();