为什么CancellationToken
的{{1}}未在BlockingCollection
的构造函数中传递?
令牌必须传递到BlockingCollection
和Take
方法,原因是什么?
答案 0 :(得分:2)
为什么使用ctor会更好?
我可以想象为Take()使用CancellationToken但不能为Add()使用 或使用不同的令牌。
答案 1 :(得分:2)
CancellationToken用于支持“取消操作”。这是一个比布尔字段意味着“活动/禁用”的对象实例更通用的概念。它支持并发,对象重用和其他有趣的场景。
因此,操作是Add()和Take(),并且由于集合为空或已满,每个操作都可以长时间运行。如果调用者想要取消长时间运行的方法调用选项,那么他们会传入令牌并在需要时发出信号。