В ViewComponent: в этом асинхронном методе отсутствуют операторы ожидания и он будет работать синхронно - PullRequest
0 голосов
/ 07 мая 2019

В ViewComponent я получил это предупреждение: (Я использовал ASP.NET Core 2)

предупреждение CS1998: в этом асинхронном методе отсутствуют операторы 'await' и он будет работать синхронно.Подумайте об использовании оператора 'await' для ожидания неблокирующих вызовов API или 'await Task.Run (...)' для выполнения работы с процессором в фоновом потоке.

Как я могурешить это?

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>

Ответы [ 3 ]

2 голосов
/ 07 мая 2019

В вашем действии нет await методов InvokeAsync

Вы можете безопасно удалить async и изменить возврат на IViewComponentResult

public IViewComponentResult Invoke(GenericReportViewModel model)
{
   return View(model);
}
1 голос
/ 07 мая 2019

Вы не используете какой-либо асинхронный вызов в методе (нет await), следовательно, предупреждение. ViewComponent имеет 2 метода InvokeAsync и Invoke. Вы должны использовать синхронную версию (Invoke) ViewComponent, когда в реализации нет асинхронных вызовов:

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-synchronous-work

1 голос
/ 07 мая 2019

Это не обязательно должно быть асинхронно, поскольку вы не делаете ничего, что могло бы принести пользу от асинхронной операции.Отбросьте асинхронную и задачу <>.

...