假设:
BlockingCollection<T> coll
CancellationTokenSource cts
coll.GetConsumingEnumerable(cts.Token)
所以cts.Cancel()
取消了所有10个线程。
是否可以编写自定义取消令牌源,可以告诉它只取消部分线程?所以:
cts.Cancel(5)
将仅取消5个被阻止的线程。任何5。
答案 0 :(得分:3)
没有。您需要使用多个不同的取消令牌,让每个消费者使用自己的令牌,并取消一些令牌集合。
那就是说你可以通过创建某种类型的取消令牌集合来封装大部分此类行为,该集合具有生成新令牌的方法,而另一种取消它可以取消一定数量的令牌。