Есть ли способ вызвать метод асинхронного действия в стандартном методе действий и не дождаться выполнения метода async (сохраняя тот же объект запроса)?Запустить метод асинхронного действия в фоновом режиме
public class StandardController : Controller
{
public ActionResult Save()
{
// call Background.Save, do not wait for it and go to the next line
return View();
}
}
public class BackgroundController : AsyncController
{
public void SaveAsync()
{
// background work
}
}
Я пытался использовать класс задач, чтобы сделать Backround работу, но когда я начал задачу и метод действия возвратил View, Запрос был убит, а мой экземпляр DependencyResolver был удален, так фоновая задача начала бросать исключения.
Первой идеей было выполнить Стандарт. Сохранять (без вызова фоновой задачи) и возвращать представление, в котором метод Background.Save можно было бы вызвать в ajax. Другими словами: вызовите другой запрос на контроллер асинхронного вызова, чтобы запустить фоновое задание.
Основная проблема заключается в том, как вызвать метод асинхронного хранения информации авторизации (в куки-файлах) и преобразователя зависимостей (в моем случае: autofac).
Почему вы сначала вызываете методы контроллера? –
Вы можете просто позвонить. 'SaveAsync()' вернет элемент управления 'Save()' в первый оператор 'await', если он должен ждать. Если вы хотите использовать фоновый поток, используйте 'Task.Run()' –
Просто понял, что 'SaveAsync' не является асинхронным. Либо сделайте его асинхронным, либо вызовите его с помощью 'Task.Run()' –