如果消费者已被take()阻止,生产者的completeAdding会将其唤醒吗?使用BlockingCollection。 MSDN没有明确说明。
答案 0 :(得分:2)
没有
快速实验表明它将在Take()方法中抛出InvalidOperation异常。
这是有道理的:
int value = data.Take();
当线程/任务刚刚“唤醒”而没有任何数据返回时,value
会是什么?
如果您被TryTake(out x)
屏蔽,则在添加完成后,它将以false
返回。
答案 1 :(得分:0)
我对BlockingCollections不太熟悉,但总的来说,我的理解是,如果某些东西被阻止,它就不会被第三方“吵醒”。