GetConsumingEnumerable()在完成添加后阻塞

本文关键字:添加 GetConsumingEnumerable | 更新日期: 2023-09-27 18:17:30

我有一些集合与id的异步处理。下面的简化代码

Task.Factory
        .StartNew(() => {
            foreach (long id in ids.GetConsumingEnumerable())
            {
              //processing code here
            }
        });

和另一个线程在一定条件后调用ids上的CompleteAdding。但是工作线程在此之后仍然被阻塞。准确地说,工作线程阻塞在foreach语句的in操作符上。

我该如何解决这个问题?

GetConsumingEnumerable()在完成添加后阻塞

试试这个

var local = ids.GetConsumingEnumerable();
Task.Factory
        .StartNew(() => {
            foreach (long id in local)
            {
              //processing code here
            }
        });