Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将完成添加以唤醒已被take阻塞的线程_C#_.net - Fatal编程技术网

C# 将完成添加以唤醒已被take阻塞的线程

C# 将完成添加以唤醒已被take阻塞的线程,c#,.net,C#,.net,如果消费者已经被take()阻止,生产者的completeAdding会唤醒它吗?使用BlockingCollection。MSDN没有清楚地说明这一点。我不太熟悉BlockingCollections,但一般来说,我的理解是,如果某个内容被阻止,它不会被第三方“唤醒”。否 快速实验表明,它将在Take()方法中引发InvalidOperation异常 这是有道理的: int value = data.Take(); 当线程/任务在没有任何数据返回的情况下“唤醒”时,value是什么 如果您被

如果消费者已经被take()阻止,生产者的completeAdding会唤醒它吗?使用BlockingCollection。MSDN没有清楚地说明这一点。

我不太熟悉BlockingCollections,但一般来说,我的理解是,如果某个内容被阻止,它不会被第三方“唤醒”。

快速实验表明,它将在Take()方法中引发InvalidOperation异常

这是有道理的:

int value = data.Take();
当线程/任务在没有任何数据返回的情况下“唤醒”时,
value
是什么

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