Слендер ответил на мой первоначальный вопрос о том, что происходит при запуске и забыл после отправки HTTP-ответа, но теперь у меня остался вопрос, как правильно ставить в очередь фоновые задачи
EDIT
Поскольку все мы знаем, что Async void, как правило, плох, , за исключением случая, когда дело доходит до обработчиков событий , я хотел бы выполнить некоторую фоновую логику без необходимости ожидания клиента. Моей первоначальной идеей было использовать Fire and Forget
Скажите, у меня есть событие:
public event EventHandler LongRunningTask;
А потом кто-то подписывается на пожар и забывает задание:
LongRunningTask += async(s, e) => { await LongNetworkOperation;};
метод веб-API - это вызов:
[HttpGet]
public async IActionResult GetTask()
{
LongRunningTask?.Invoke(this, EventArgs.Empty);
return Ok();
}
Но если я сделаю это, моя долгосрочная задача не гарантированно завершится, как я могу справиться с выполнением фоновой задачи, не влияя на время, необходимое для выполнения моего запроса (например, я не хочу ждать задачи закончить первым)?