Asp.net core 有人能解释为什么Razor调用InvokeAsync而类实现InvokeAsync吗

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

我正在熟悉别人的代码,她在Index.cshtml中有这样的代码:

        @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绑定的工作。 你可以看到这个

您可以在此处查看有关组件同步方法的信息: