BlockingCollection和CancellationToken传递

时间:2010-11-18 13:07:12

标签: c# .net parallel-processing

为什么CancellationToken的{​​{1}}未在BlockingCollection的构造函数中传递?

令牌必须传递到BlockingCollectionTake方法,原因是什么?

2 个答案:

答案 0 :(得分:2)

为什么使用ctor会更好?

我可以想象为Take()使用CancellationToken但不能为Add()使用 或使用不同的令牌。

答案 1 :(得分:2)

CancellationToken用于支持“取消操作”。这是一个比布尔字段意味着“活动/禁用”的对象实例更通用的概念。它支持并发,对象重用和其他有趣的场景。

因此,操作是Add()和Take(),并且由于集合为空或已满,每个操作都可以长时间运行。如果调用者想要取消长时间运行的方法调用选项,那么他们会传入令牌并在需要时发出信号。