c# - 是否有可能有一个取消 token 源,仅取消一些服务员?

标签 c# .net multithreading cancellation cancellationtokensource

给定:

  • BlockingCollection<T> coll
  • CancellationTokenSource cts
  • coll.GetConsumingEnumerable(cts.Token) 上有 10 个线程被阻止

所以cts.Cancel()取消所有 10 个线程。

是否可以编写一个自定义取消 token 源,可以告诉它仅取消某些线程?所以:

cts.Cancel(5)

只会取消 5 个被阻止的线程。任意 5 个。

最佳答案

没有。您需要拥有多个不同的取消 token ,让每个使用者使用自己的 token ,并取消一定数量的 token 集合。

也就是说,您可以通过创建某种类型的取消 token 集合来封装大部分这种行为,该集合具有生成新 token 的方法和取消所发出的一定数量 token 的方法。

关于c# - 是否有可能有一个取消 token 源,仅取消一些服务员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25652124/

相关文章:

C# string.IndexOf() 返回意外值

c# - 确保类是线程安全的,只有属性(任何专门用于此的 .NET 4.0 技术?)

c# - 如何在C#中检索当前类/dll所在的目录?

c# - 在具有多个构造函数的单个类中使用对象

C# 验证日期模式

java - 从服务器请求 JSON 时客户端卡住

multithreading - swi-prolog 中的多线程有一点改进

c# - SQL 批量存储过程调用 C#

c# - 可调整大小的表单 C#

.net - 多线程变量访问