非阻塞任务。在.NET 4.5中等待

时间:2014-06-06 13:50:13

标签: c# asynchronous async-await

Task t = Task.Run(async () => { await someAsyncMethod(); });
t.Wait();

这是否意味着当t.Wait()等待时,该线程被用于其他东西而不只是坐在那里等待任务完成?仅仅因为我使用了async () => { await someAsyncMethod(); }

2 个答案:

答案 0 :(得分:6)

Wait将阻止调用线程。

要进行非阻塞等待,请使用await

await Task.Run(async () => { await someAsyncMethod(); });

但是,Task.Run通常只应用于CPU绑定方法,因此您更有可能这样做:

await someAsyncMethod();

答案 1 :(得分:-2)

我遇到了类似的问题并使用了:

var t = Task.Run(async () => { await someAsyncMethod(); });
t.Result;

这似乎不会阻止该线程。