c# - 将 completeAdding 唤醒已经被 take 阻塞的线程

标签 c# .net

在消费者已经被 take() 阻塞的情况下,生产者的 completeAdding 会唤醒它吗?使用 BlockingCollection。 MSDN上没有说清楚。

最佳答案

没有。

快速实验表明它将在 Take() 方法中抛出 InvalidOperation 异常。

这是有道理的:

int value = data.Take();

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

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

关于c# - 将 completeAdding 唤醒已经被 take 阻塞的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5919013/

相关文章:

C#:在 Word 中打开 FileStream 中的 Word 文件以供读取

javascript - 从 Ajax 调用 .Net 中的 SOAP Web 方法时出现 500 服务器错误

c# - Entity Framework 还是其他?

c# - 类库错误不包含适合入口点的静态方法 'Main'

.net - jquery 类似 c#/.Net 中的扩展

c# - 每 100 毫秒检查一次响应

c# - 如何断言代码正在主线程中运行?

c# - 如何实现带有页眉和页脚的 WrapPanel

c# - 覆盖 ASP.NET gridview 控件的 header 输出

c# - 从 XHTML 文档中去除特定标签(但保留其内容)的机制?