我有以下代码从.NET Core 2
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
XDocument xdocument = await XDocument.LoadAsync(xmlStream, new LoadOptions(), token);
CancellationToken
是必需参数。但我在这里使用CancellationToken
是什么意思?
在这种情况下如何使用取消令牌
答案 0 :(得分:0)
当您在异步方法中时,您应该已经收到取消令牌作为参数。如果您这样做,您可以检查取消状态(如果调用者已请求取消)并采取相应措施(抛出异常或中断操作)并将此令牌传递给您调用的异步方法
如果您没有收到令牌,您可以自己构建(如您所做)并将其传递给您。在这种情况下,您可以控制令牌源,并可以自行取消整个操作。
如果您不想使用取消功能,则无需调用取消 - 这取决于您所编写方法的性质。您可能希望根据用户输入或计时器取消长时间运行的异步方法。这只是可取消异步方法提供的选项(如问题中的LoadAsync)。
https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/task-cancellation
在后一种情况下,请确保丢弃令牌源 - 最好使用using块。