Думаю, я что-то не понимаю. Я думал, что Task.Yield() принудительно запускает новый поток/контекст для задачи, но после перечитывает этот ответ кажется, что он просто заставляет метод быть асинхронный. Он все равно будет в том же контексте.
Какой правильный способ - в процессе asp.net - создавать и запускать несколько задач параллельно, не вызывая тупика?
Другими словами, предположим, что у меня есть следующий метод:
async Task createFileFromLongRunningComputation(int input) { 
    //many levels of async code
}
И когда ударит определенный маршрут POST, я хочу одновременно запустить вышеуказанные методы 3 раза, немедленно вернуться, но регистрировать, когда все три выполнены.
Думаю, мне нужно добавить что-то подобное в мое действие
public IHttpAction Post() {
   Task.WhenAll(
       createFileFromLongRunningComputation(1),
       createFileFromLongRunningComputation(2),
       createFileFromLongRunningComputation(3)
   ).ContinueWith((Task t) =>
      logger.Log("Computation completed")
   ).ConfigureAwait(false);
   return Ok();
}
Что нужно сделать в createFileFromLongRunningComputation? Я думал, что Task.Yield верен, но, похоже, это не так.
