Async await 如何在XDocument.LoadAsync()中使用CancellationToken

Async await 如何在XDocument.LoadAsync()中使用CancellationToken,async-await,.net-core,coreclr,cancellation-token,system.xml,Async Await,.net Core,Coreclr,Cancellation Token,System.xml,我有以下代码从中的流中加载XDocument CancellationTokenSource source = new CancellationTokenSource(); CancellationToken token = source.Token; XDocument xdocument = await XDocument.LoadAsync(xmlStream, new LoadOptions(), token); CancellationToken是必需参数。但是我想知道Canc

我有以下代码从
中的流中加载XDocument

 CancellationTokenSource source = new CancellationTokenSource();
 CancellationToken token = source.Token;
 XDocument xdocument = await XDocument.LoadAsync(xmlStream, new LoadOptions(), token);
CancellationToken
是必需参数。但是我想知道
CancellationToken
在这里有什么用?
如何在这种情况下使用取消令牌当您在异步方法中时,您应该已经收到一个取消令牌作为参数。如果您这样做了,您可以检查取消状态(如果调用方已请求取消),并相应地采取行动(引发异常或中断操作),然后将此令牌传递给您调用的异步方法

如果您没有收到令牌,您可以自己构造它(正如您所做的那样)并将其传递。在这种情况下,您可以控制令牌源,并可以自己取消整个操作

如果不想使用cancel功能,则不必调用cancel—这取决于所编写方法的性质。您可能希望取消基于用户输入或计时器的长时间运行的异步方法。这只是可取消异步方法提供的一个选项(如您问题中的LoadAsync)

在后一种情况下,请确保处置令牌源-最好使用using块