С точки зрения доступности, это не поможет один бит - вы по-прежнему блокирует поток от GetCategories
вызова. Вы бы получить эквивалентное поведение с помощью
[HttpGet]
public async Task<IHttpActionResult> Get(string country)
{
var result = repo.GetCategories(new List<string> { country });
return Ok(result);
}
или
[HttpGet]
public Task<IHttpActionResult> Get(string country)
{
var result = repo.GetCategories(new List<string> { country });
return Task.FromResult(Ok(result));
}
Они работают одинаково для обработки исключений по-разному (в случае async
+ await
, они всегда завернуты в Task
), но кроме неважно, ожидаете ли вы Get
в любом случае. Однако было бы полезно, если бы вы использовали ручные продолжения или задержки ожидания.
В конце концов, если у вас есть много таких вызовов, веб-сервер/приложение просто создаст больше потоков для обработки запросов, поэтому вы даже не повредите доступность - накладные расходы больше; вы можете обрабатывать более параллельные запросы с асинхронным кодом, и для этого обычно требуется меньше памяти.
Не так ли, что методы WebAPI * have * возвращают задачу? Я никогда не пробовал ... – Luaan
@ Luaan Нет, такой необходимости нет. –