C# GetConsumingEnumerable()在完成添加后阻塞

C# GetConsumingEnumerable()在完成添加后阻塞,c#,task-parallel-library,C#,Task Parallel Library,我对某个id为的集合进行了异步处理。简化代码如下 Task.Factory .StartNew(() => { foreach (long id in ids.GetConsumingEnumerable()) { //processing code here } }); 另一个线程在特定条件下调用ID上的CompleteAdding。但在此之后,工作线程仍

我对某个id为的集合进行了异步处理。简化代码如下

Task.Factory
        .StartNew(() => {
            foreach (long id in ids.GetConsumingEnumerable())
            {
              //processing code here
            }
        });
另一个线程在特定条件下调用ID上的CompleteAdding。但在此之后,工作线程仍然被阻塞。精确地说,工作线程阻塞foreach语句的in运算符

我怎样才能解决这个问题?感谢您的帮助。

试试这个

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

我希望CompletedAdding做正确的事情。你能发布一个演示问题的简短但完整的程序吗?你能发布添加ID的代码吗?2Jon Skeet-当尝试提取演示问题的简短程序时,我发现该片段按预期工作。一定是其他原因导致阻塞…2签名-仅通过调用ids.AddvalueToProcessIt不起作用。实际上它是相同的代码。但是thanx需要帮助