BlockingCollection и CancellationToken прохождение - PullRequest
1 голос
/ 18 ноября 2010

Почему CancellationToken для BlockingCollection не передается в конструктор BlockingCollection?

Токен должен быть передан в методы Take и Add, с чем это связано?

Ответы [ 2 ]

2 голосов
/ 28 марта 2013

CancellationToken используется для поддержки «отмены операции». это более общая концепция, чем экземпляр объекта с логическим полем, означающим «активный / отключенный». Он поддерживает параллелизм, повторное использование объектов и другие интересные сценарии.

Таким образом, это операции Add () и Take (), и каждая из них может быть длительной из-за того, что коллекция пуста или заполнена. Если вызывающая сторона хочет отменить длительный вызов метода, тогда они передают токен и при необходимости сообщают об этом.

2 голосов
/ 18 ноября 2010

Почему лучше использовать ctor?

Я могу представить себе использовать CancellationToken для Take (), но не для Add ().
Или использовать другие токены.

...