Task t = Task.Run(async () => { await someAsyncMethod(); });
t.Wait();
这是否意味着在等待期间,线程会被用于其他事情而不是只是坐在那里等待任务完成?只是因为我使用了{await someAsyncMethod();}>吗?
Task t = Task.Run(async () => { await someAsyncMethod(); });
t.Wait();
Wait(等待)
会阻塞调用线程。
要进行非阻塞等待,请使用await(等待)
:
await Task.Run(async () => { await someAsyncMethod(); });
然而,Task.Run
应该通常只用于 CPU-bound 方法,因此你更可能只需这样做:
await someAsyncMethod();
await
,在任务内部,因此显然它已经是异步的。如果该方法确实是同步的 CPU 绑定方法,那么使用 Task.Run
就是合适的。 - Servy我曾经遇到过类似的问题,使用了以下代码:
var t = Task.Run(async () => { await someAsyncMethod(); });
t.Result;
这似乎不会阻塞线程。
result
是什么? - Servy