我想连锁Task
s,然后并行启动链。 这个片段只是为了说明我的问题:适当的方式来连锁任务
var taskOrig = new Task(() => { });
var task = taskOrig;
foreach (var msg in messages)
{
task=task.ContinueWith(t => Console.WriteLine(msg));
}
taskOrig.Start();
一切正常,只是有点完美主义里我不喜欢有空方法执行第一() => { }
。
有什么办法避免呢?
我明白它几乎不影响性能(除非你经常这样做),但仍然如此。在我的情况下,性能很重要,因此检查每个迭代中是否存在任务不是实现它的方法。要做到这一点
“在我的情况下的性能问题,所以检查是否存在任务在每次迭代中不做到这一点的方式“:与实际执行任务相比,所需时间可以忽略不计。除非您确实衡量了性能影响,否则显然是过早优化的情况。 –
@ThomasLevesque你可能是对的,我只是想,也许我错过了'任务'创建API中的东西。我将有机会衡量后来的表现。 – Anri
你可能会发现TPL DataFlow很有趣 – sll