Asp.net core 有人能解释为什么Razor调用InvokeAsync而类实现InvokeAsync吗
我正在熟悉别人的代码,她在Index.cshtml中有这样的代码:Asp.net core 有人能解释为什么Razor调用InvokeAsync而类实现InvokeAsync吗,asp.net-core,razor,async-await,asp.net-core-viewcomponent,Asp.net Core,Razor,Async Await,Asp.net Core Viewcomponent,我正在熟悉别人的代码,她在Index.cshtml中有这样的代码: @if (Model.Type == Group) { @await Component.InvokeAsync("GroupMessage") } 这在ViewComponent类中 public class GroupMessageViewComponent : ViewComponent { public IViewCom
@if (Model.Type == Group)
{
@await Component.InvokeAsync("GroupMessage")
}
这在ViewComponent类中
public class GroupMessageViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return View();
}
}
因此,在标记中,有一个InvokeAsync,但该类只实现Invoke。她已经不在公司了,所以我不能问她设计背后的原因(我可能是在表现我对同步/异步的无知!)
谢谢。您在方法中没有使用任何异步调用,没有
wait
ViewComponent
有两种方法InvokeAsync
和Invoke
因此,您只能在GroupMessageViewComponent
中使用同步方法InVoke
,否则会收到警告:
警告CS1998:此异步方法缺少'await'运算符,将同步运行。考虑使用“Acess”操作符等待非阻塞API调用,或“等待任务.Run(…)”在后台线程上执行CPU绑定的工作。
你可以看到这个
您可以在这里看到关于组件同步方法:。您在方法中不使用任何异步调用,没有
wait
ViewComponent
有两种方法InvokeAsync
和Invoke
因此,您只能在GroupMessageViewComponent
中使用同步方法InVoke
,否则会收到警告:
警告CS1998:此异步方法缺少'await'运算符,将同步运行。考虑使用“Acess”操作符等待非阻塞API调用,或“等待任务.Run(…)”在后台线程上执行CPU绑定的工作。
你可以看到这个
您可以在此处查看有关组件同步方法的信息: