Sco*_*.Hu 5 c# task async-await
static async Task WaitTaskCompleted()
{
//Use Thread A before await Task.CompletedTask
await Task.CompletedTask;
//Will the code after await Task.CompletedTask always use Thread A, or there is chance to have a Thread B?
}
Run Code Online (Sandbox Code Playgroud)
这意味着await Task.CompletedTask将始终实际同步执行该方法?
Mar*_*ell 14
是的,这段代码将始终同步运行;主延续编译器 goo 仅在遇到第一个不完整的awaitable时才会调用。
awaiter = Task.CompletedTask.GetAwaiter();
if (!awaiter.IsCompleted)
{
num = (<>1__state = 0);
<>u__1 = awaiter;
<>t__builder.AwaitUnsafeOnCompleted(ref awaiter, ref this);
return;
}
Run Code Online (Sandbox Code Playgroud)
它是实现异步性的AwaitUnsafeOnCompleted(...)+ return。