了解以下异步等待调用之间的区别

Understanding the difference between the following async-await calls

这些调用的行为是否相似?它们的行为方式是否与 async-await 运行s 相同 - 可以或不能 运行 在相同的原始线程上下文中?或者第一个会确保执行发生在不同的线程上下文中吗?

第一种方式-

Task task = SomeAsyncTask();
await task();

第二种方式 -

await SomeAsyncTask();

如果 Task task = SomeAsyncTask();await task(); 之间有代码,您的任务将开始执行异步代码,您的当前线程将同时执行该代码。

否则相等..

Task task = SomeAsyncTask();
//Codes executed on current thread while SomeAsyncTask is running
await task();

All asynchronous methods start synchronously.

即:

await SomeAsyncTask();

完全相同:

var task = SomeAsyncTask();
await task;

在这两种情况下,SomeAsyncTask 将 运行 直到它完成或遇到异步 await,此时它 returns 一个任务。然后该任务由调用方法await编辑。