C# 了解以下异步等待调用之间的差异

C# 了解以下异步等待调用之间的差异,c#,async-await,threadpool,C#,Async Await,Threadpool,这些调用的行为是否类似?它们的行为是否与async await运行的方式相同?是否可以在相同的原始线程上下文上运行?或者第一个线程可以确保执行在不同的线程上下文中进行吗 第一条路- Task task = SomeAsyncTask(); await task(); 第二条路- await SomeAsyncTask(); 如果Task Task=SomeAsyncTask()之间存在代码和等待任务(),您的任务将开始执行异步代码,而您的当前线程将同时执行该代码 否则,他们是平等的 Task

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

第一条路-

Task task = SomeAsyncTask();
await task();
第二条路-

await SomeAsyncTask();

如果
Task Task=SomeAsyncTask()之间存在代码
等待任务(),您的任务将开始执行异步代码,而您的当前线程将同时执行该代码

否则,他们是平等的

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

即:

await SomeAsyncTask();
与以下内容完全相同:

var task = SomeAsyncTask();
await task;
在这两种情况下,
SomeAsyncTask
将一直运行,直到完成或点击异步
wait
,此时返回任务。然后调用方法将
等待该任务