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?
}
这意味着
await Task.CompletedTask
将始终实际同步执行该方法? 最佳答案
是的,此代码将始终同步运行;主要延续编译器goo仅在遇到第一个不完整的等待对象时被调用。
您可以在sharplab中看到它-特别是在这里:
awaiter = Task.CompletedTask.GetAwaiter();
if (!awaiter.IsCompleted)
{
num = (<>1__state = 0);
<>u__1 = awaiter;
<>t__builder.AwaitUnsafeOnCompleted(ref awaiter, ref this);
return;
}
实现异步性的是
AwaitUnsafeOnCompleted(...)
+ return
。关于c# - 等待Task.CompletedTask是否意味着async方法将同步运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59769625/