【发布时间】:2016-02-17 10:13:59
【问题描述】:
我正在努力让我的任务运行。我相信他们不会开始并且等待永远不会返回,这样我的应用程序就永远不会运行得更远。它旨在处理多个数据集(在执行时已知),因此我使用循环添加它们,它看起来是这样的:
foreach(IGrouping<enumType, Item> group in lp)
{
Task<ProcessedItem> t = new Task<ProcessedItem>(
() => ProcessItems(group.ToList(), group.Key));
tasks.Add(t);
}
await Task.WhenAll(tasks);
(...)
它在 Task.WhenAll 处停止。我认为他们根本没有开始,我在另一个方法中有类似的代码,但是我直接将函数传递给任务:
Task<ReturnType>(Func);
我认为这是造成差异的原因,但由于参数的原因,我不能在此处以这种方式传递它。我应该如何修改我的代码以使其工作?我应该明确启动每项任务吗?如果任务在等待之前完成,那不会破坏等待关键字吗?
【问题讨论】:
标签: c# asynchronous async-await task-parallel-library