use*_*923 5 c# asp.net-mvc razor asp.net-core-mvc
考虑 ASP.Net Core 的视图文件中的以下两行:
@Component.InvokeAsync("Greeting").Result
@await Component.InvokeAsync("Greeting")
Run Code Online (Sandbox Code Playgroud)
有什么不同?哪种情况下更可取?在我的代码中,它们都给出相同的视觉结果;是否存在结果可能不同的情况?
两个调用很可能需要相同的时间返回,区别在于第一个调用将阻塞线程,但第二个调用会将线程返回到池中并允许它被另一个请求使用。本质上意味着使用该关键字时您的服务每秒可以处理更多请求await。
await尽可能使用以防止线程阻塞。阅读一些有关异步和等待的内容 - https://learn.microsoft.com/en-us/dotnet/csharp/async
来自 MSDN -await关键字是奇迹发生的地方。它将控制权交给执行等待的方法的调用者,并最终允许 UI 响应或服务具有弹性。
本质上,该await关键字将控制权交还给调用者,并将线程释放回线程池。