2010-11-18 49 views

回答

2

为什么使用ctor会更好?

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

+0

感谢您的快速回答!有一个用于添加的标记,因为您可以指定集合的​​容量。添加到完整集合会阻止(这可以用令牌取消)。我认为有一个BlockingCollection构造函数带有一个用于所有Add和Take操作的令牌。我在问这个问题,因为我担心我可能会误解取消标记处理中的某些内容。 – thumbmunkeys 2010-11-18 13:20:49

+0

它由使用模式驱动。使用1个标记添加和采取只会在少数情况下有用。 – 2010-11-18 13:26:47

+0

好的,谢谢Henk! – thumbmunkeys 2010-11-18 13:28:07

2

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

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

相关问题