完成添加后,GetConsumingEnumerable()会阻塞

时间:2011-12-12 16:24:15

标签: c# task-parallel-library

我有一些id的异步处理。以下简化代码

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

另一个在某些条件后调用ids上的CompleteAdding的线程。但是之后工作者线程仍然被阻止。确切地说,工作线程阻塞了foreach语句的in运算符。

我怎么能解决这个问题?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

试试这个

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