【发布时间】:2014-08-15 06:32:36
【问题描述】:
我想链Tasks,然后并行启动链。
这个 sn-p 只是为了说明我的问题:
var taskOrig = new Task(() => { });
var task = taskOrig;
foreach (var msg in messages)
{
task=task.ContinueWith(t => Console.WriteLine(msg));
}
taskOrig.Start();
除了我内心的一个小完美主义者不喜欢先执行空方法() => { }之外,一切都很好。
有什么办法可以避免吗?
我确实了解它几乎不会影响性能(除非您经常这样做),但仍然如此。就我而言,性能很重要,因此检查任务是否存在于每次迭代中并不是这样做的方法。
【问题讨论】:
-
“在我的情况下,性能很重要,因此检查任务是否存在于每次迭代中并不是这样做的方法。”:与实际执行任务相比,它所花费的时间可以忽略不计。除非您确实测量了性能影响,否则这显然是过早优化的情况。
-
@ThomasLevesque 你可能是对的,我只是想也许我在
Task创建 API 时遗漏了一些东西。稍后我将有机会衡量性能影响。 -
您可能会发现 TPL DataFlow 很有趣
标签: c# multithreading task-parallel-library