我有一些id的异步处理。以下简化代码
Task.Factory
.StartNew(() => {
foreach (long id in ids.GetConsumingEnumerable())
{
//processing code here
}
});
另一个在某些条件后调用ids
上的CompleteAdding的线程。但是之后工作者线程仍然被阻止。确切地说,工作线程阻塞了foreach语句的in
运算符。
我怎么能解决这个问题?任何帮助表示赞赏。
答案 0 :(得分:0)
试试这个
var local = ids.GetConsumingEnumerable();
Task.Factory
.StartNew(() => {
foreach (long id in local)
{
//processing code here
}
});