了解以下async-await调用之间的区别

时间:2017-09-12 21:36:54

标签: c# async-await threadpool

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

第一种方式 -

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

第二种方式 -

await SomeAsyncTask();

2 个答案:

答案 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执行该任务。