将完成添加以唤醒已被阻止的线程,取消

问题描述:

在消费者已被take()阻止的情况下,生产者的completeAdding会将其唤醒吗?使用BlockingCollection。 MSDN没有说清楚。将完成添加以唤醒已被阻止的线程,取消

号快速实验表明它会在采取()方法抛出InvalidOperation异常。

这是有道理的:

int value = data.Take(); 

什么会value是当线程/任务也只是“唤醒”没有任何数据返回?

如果您被TryTake(out x)阻止,则在添加完成时它将返回false

我对BlockingCollections并不是很熟悉,但总的来说,我的理解是,如果有东西被阻塞,它不会被第三方“唤醒”。