@UniverseElement

В чём отличие ActionResult от Task(ActionResult) и ToList() от ToListAsync()?

Ниже два метода, которые по сути делают одно и тоже, один из них асинхронный.

[HttpGet]
public ActionResult Users()
{
return View(_userManager.Users.ToList());
}

[HttpGet]
public async Task(ActionResult) UsersAsync()
{
return View(await _userManager.Users.ToListAsync());
}

Как я понимаю, await _userManager.Users.ToListAsync() выполняется в другом потоке, временно освобождая вызывающий поток.

Есть ли смысл в такой асинхронности в рамках веб-приложения, если освобождая один поток, мы занимаем другой?
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
await _userManager.Users.ToListAsync() выполняется в другом потоке, временно освобождая вызывающий поток.

Нет. Это будет вызвано в текущем потоке, но когда дело дойдёт до IO, поток будет освобождён. Новый поток занят не будет.
Есть ли смысл в такой асинхронности в рамках веб-приложения

Есть, и это даже сами MS рекомендуют.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AndromedaStar
.Net - monkey
Конечно, разница есть. Но чтобы это наглядно увидеть попробуйте смоделировать ситуацию, с 10000 одновременных пользователей вашего приложения. Погуглите api load testing.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы