在ViewComponent中,我得到了以下警告:(我使用了ASP.NET Core2
)
public class GenericReportViewComponent : ViewComponent
{
public GenericReportViewComponent()
{
}
public async Task<IViewComponentResult> InvokeAsync(GenericReportViewModel model)
{
return View(model);
}
}
更新:
在视图中,我有@await
:
<div class="container">
@await Component.InvokeAsync("GenericReport", new GenericReportViewModel() { })
</div>
方法中不使用任何异步调用(没有await
),因此出现警告。viewcomponent
有两个方法invokeasync
和invoke
。当实现中没有异步调用时,应使用viewcomponent
的同步版本(invoke
):
public class GenericReportViewComponent : ViewComponent
{
public IViewComponentResult Invoke(GenericReportViewModel model)
{
return View(model);
}
}
以下是关于同步工作的文档部分:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components?view=aspnetcore-2.2#perform-synchronal-work
警告试着告诉我什么?我该怎么办? 这是我的代码:它是否使用多线程运行?
我猜我的代码有很多薄弱点,所以请随时分享任何想法。顺便问一下,我的主要问题是,当我尝试执行以下操作时,以及在最后,当我希望等待所有任务(通过使用task.waitall)完成以检查是否存在任何异常时,是否真的会因为缺少'await'操作符而使代码的任何部分同步运行? 完整的来源,如果需要进一步的信息。也许还值得一提的是,我使用的是.NET5.0。
我知道我可以通过等待来修复它,但对于只执行一些廉价操作的方法来说,这感觉不对。这听起来也会给执行增加不必要的开销,但我也不确定这是否已经存在,因为存在关键字。 我应该忽略这些警告,还是有一种我看不到的方法来解决这个问题?
我有一个接口,其中包含一些返回的函数。实现接口的一些类不需要等待任何东西,而其他类可能只是抛出--因此警告是虚假的和令人讨厌的。
是否可以调用一个异步方法,以便它从一个同步的方法异步运行?我不关心它挂起同步调用程序直到它返回,而是希望该方法被异步调用。