1

我的 Start() 有一些非常慢的串行代码,所以我想我会把它扔到一个任务中并等待它。

await new Task(() => { c.Start(); });

这会编译,但它似乎不会运行任务,除非我调用 Start()。现在,我有 3 条线,而不是简单的一条线。有没有办法可以在一行中写下以下内容?

var t = new Task(() => { c.Start(); });
t.Start();
await t;
4

1 回答 1

4

你正在寻找await Task.Run(c.Start). 如果您使用的是 .NET 4.0(而不是 4.5),则可以使用await Task.Factory.StartNew(c.Start).

更喜欢Task.Factory.StartNew手动构建/启动aTaskTask.Run. Task.Factory.StartNew每个都使用更优化的实现,而不是简单的速记。

于 2012-11-25T22:59:28.560 回答