Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我的 Start() 有一些非常慢的串行代码,所以我想我会把它扔到一个任务中并等待它。
await new Task(() => { c.Start(); });
这会编译,但它似乎不会运行任务,除非我调用 Start()。现在,我有 3 条线,而不是简单的一条线。有没有办法可以在一行中写下以下内容?
var t = new Task(() => { c.Start(); }); t.Start(); await t;
你正在寻找await Task.Run(c.Start). 如果您使用的是 .NET 4.0(而不是 4.5),则可以使用await Task.Factory.StartNew(c.Start).
await Task.Run(c.Start)
await Task.Factory.StartNew(c.Start)
更喜欢Task.Factory.StartNew手动构建/启动aTask和Task.Run. Task.Factory.StartNew每个都使用更优化的实现,而不是简单的速记。
Task.Factory.StartNew
Task
Task.Run