Предположим, что у меня есть действие, как показано ниже, что я хочу вернуть View asap и продолжить выполнение некоторой работы в фоновом потоке.Выполнить метод в отдельном потоке внутри Action
public async Task<ActionResult> Index()
{
Debug.WriteLine("Inside Index");
var newCustomer = new Customer
{
Name = "Ibrahim"
};
Task.Run(() => SaveCustomer(newCustomer));
Debug.WriteLine("Exiting Index");
return View();
}
private async Task SaveCustomer(Customer NewCustomer)
{
Debug.WriteLine("Started Saving Customer");
await Task.Delay(2000);
Debug.WriteLine("Completed Saving Customer");
}
я получаю выход, как предполагалось, который:
Inside Index
Exiting Index
Started Saving Customer
Completed Saving Customer
Но что меня беспокоит то, что я получаю предупреждение, что мое Index
действие будет работать синхронно, независимо, и я должен положить await
, но затем представление возвращается после завершения SaveCustomer
, и цель побеждена.
Как я это делаю неправильно? Любое предложение приветствуется.
может быть немного не по теме - но что, если 'SaveCustomer (newCustomer)' терпит неудачу? Разве текущий запрос не должен знать об этом? –
@shay__ Да, конечно. Но это всего лишь пример. Я просто хочу знать, правильно ли я хочу это делать или нет. – lbrahim
Может быть, например, механизм ведения журнала, а не для сохранения клиента. – lbrahim