MVC4 + async / await + возврат ответа до завершения действия
В моем приложении MVC4 мне нужно добавить контроллер для загрузки и обработки больших файлов. Сразу после загрузки файла мне нужно запустить асинхронную обработку этого файла и вернуть ответ браузеру, не дожидаясь завершения обработки.
Очевидно, я мог бы начать новый поток для обработки файла вручную, но яМне интересно, смогу ли я реализовать этот сценарий, используя механизм async / await, представленный в .net 4.5
Чтобы проверить концепцию ямы пробовали что-то вроде этого:
public async Task Test()
{
TestAsync();
return View("Test");
}
public async void TestAsync()
{
await LongRunning();
}
private Task LongRunning()
{
return Task.Factory.StartNew(() => Pause());
}
private int Pause()
{
Thread.Sleep(10000);
return 3;
}
Механизм асинхронности работает в общем: когда я отлаживаю код, я нажимаювозврат View ("Тестовое задание");» строка перед строкой "возврат 3 ", Однако браузер получает ответ только после завершения метода Pause.
Кажется, это ведет себя как обычные асинхронные контроллеры (те, которые используют методы Async и Completed). Есть ли способ использовать async / await в контроллерах для моего сценария?