2010-11-18 48 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(),並且由於集合爲空或已滿,每個操作都可以長時間運行。如果調用者想要選擇取消長時間運行的方法調用,那麼他們會傳入令牌並在需要時發出信號。

相關問題