了解以下异步等待调用之间的区别
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
编辑。
这些调用的行为是否相似?它们的行为方式是否与 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
编辑。