c# - 如何取消 CancellationToken

标签 c# task-parallel-library cancellationtokensource

我启动一个任务,然后启动其他任务等等。给定那棵树,如果任何任务失败,则整个操作的结果都是无用的。我正在考虑使用取消 token 。令我惊讶的是, token 没有“CancelThisToken()”方法...

我怎么能拥有一个CancellationToken , 取消?

最佳答案

如文档所述,您需要从源对象调用取消 方法。您提供的链接中包含示例代码。以下是相关部分:

// Define the cancellation token.
CancellationTokenSource source = new CancellationTokenSource();
previouslyProvidedToken = source.Token;
...
source.Cancel();

CancellationToken Struct

how can I, in possession of only a CancellationToken, cancel it?

编辑: 我在几年前写过这篇文章并重新访问它我不知道它是否真的有效,无论是在写的时候还是现在。留在这里留给后代。

如果没有对来源的引用,您将无法取消 token 。这并不意味着您需要首先生成 token 的 CancellationTokenSource。当给定一个 CancellationToken 时,您可以创建一个新的 token 源实例,将它的 token 分配给提供的 token ,然后取消它。可以读取此 token 的所有其他方将看到已请求取消它。

关于c# - 如何取消 CancellationToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875279/

相关文章:

c# - 如何有效地并行化 LINQ Except 方法

multithreading - 管理 TPL 队列

c# - CancellationTokenSource.Cancel 抛出异常

c# - 检查是否使用 Moq 调用了 CancellationTokenSource.Cancel()

c# - 如何从位图源 C# WPF 创建图像文件

c# - 具有多个扩展名的 GetFiles

C# 方法求和 hh :mm data ? ??

c# - MaxDegreeOfParallelism 决定最优值

c# - 在 WPF 中,为什么触发 MouseLeave 而不是 MouseDown?

task - CancellationTokenSource 与手动结束任务