Надеюсь, это все еще по теме. В этом сообщении я увидел, как создать await ViewAsync(): Возвращение представления с помощью async keyword
Итак, мое соображение было: хорошо, я хочу, чтобы мое приложение использовало многопоточность, давайте сделаем BaseController, что содержит эти методы для ViewAsync:
только часть его:
public class BaseController : Controller
{
[NonAction]
public virtual async Task<ViewResult> ViewAsync()
{
return await Task.Run(() => this.View(null));
}
[NonAction]
public virtual async Task<ViewResult> ViewAsync(string viewName)
{
return await Task.Run(() => this.View(viewName, this.ViewData.Model));
}
// the other implementations....
}
теперь я всегда мог бы называть это в классе наследования:
[HttpGet]
public async Task<IActionResult> DoSomething()
{
// maybe we need to do something here, maybe not
return await ViewAsync(new DoSomethingObject());
}
imho, мое преимущество / цель - производительность, так как я всегда могу использовать многопоточность.
Правильно ли я со своим соображением? В сообщении комментарий к ответу начинался с I wouldn't do this. Но не так много голосов / комментариев / ответов. Где риски или недостатки такой реализации? И, может быть, почему Microsoft.AspNetCore.Mvc.Controller не пришел с методом ViewAsync?