这些调用会有类似的行为吗?因为它们的行为与async-await运行的方式相同 - 可以或不可以在相同的原始线程上下文中运行吗?或者第一个确保执行发生在不同的线程上下文中?
第一种方式 -
Task task = SomeAsyncTask();
await task();
第二种方式 -
await SomeAsyncTask();
答案 0 :(得分:6)
如果Task task = SomeAsyncTask();
和await task();
之间有代码,您的任务将开始执行异步代码,并且您当前的线程将同时执行该代码。
否则,他们是平等的。
Task task = SomeAsyncTask();
//Codes executed on current thread while SomeAsyncTask is running
await task();
答案 1 :(得分:1)
All asynchronous methods start synchronously
那是:
await SomeAsyncTask();
与:
完全相同var task = SomeAsyncTask();
await task;
在这两种情况下,SomeAsyncTask
将一直运行,直到它完成或遇到异步await
,此时它将返回一个任务。然后调用方法await
执行该任务。