谁能解释为什么 Razor 调用 InvokeAsync 但 class 实现 Invoke
Can anyone explain why the Razor calls InvokeAsync but the class implements Invoke
我正在熟悉别人的代码,她在 Index.cshtml:
@if (Model.Type == Group)
{
@await Component.InvokeAsync("GroupMessage")
}
这在 ViewComponent 中 class
public class GroupMessageViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return View();
}
}
所以在标记中,有一个 InvokeAsync 但 class 只实现了 Invoke。她不在公司了,所以我不能问她设计背后的原因(我可能是在表现我对synchronous/asynchronous的无知!)
谢谢。
你没有在方法中使用任何异步调用,没有await
。 ViewComponent
有两种方法 InvokeAsync
和 Invoke
.
所以你的GroupMessageViewComponent
只能使用同步方式InVoke
,否则会得到警告:
warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
你可以看到这个。
您可以在这里查看组件同步方法:Perform synchronous work。
我正在熟悉别人的代码,她在 Index.cshtml:
@if (Model.Type == Group)
{
@await Component.InvokeAsync("GroupMessage")
}
这在 ViewComponent 中 class
public class GroupMessageViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return View();
}
}
所以在标记中,有一个 InvokeAsync 但 class 只实现了 Invoke。她不在公司了,所以我不能问她设计背后的原因(我可能是在表现我对synchronous/asynchronous的无知!)
谢谢。
你没有在方法中使用任何异步调用,没有await
。 ViewComponent
有两种方法 InvokeAsync
和 Invoke
.
所以你的GroupMessageViewComponent
只能使用同步方式InVoke
,否则会得到警告:
warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
你可以看到这个
您可以在这里查看组件同步方法:Perform synchronous work。