Я знаю, что эта задача может быть потеряна из-за завершения работы приложения, но разрешается ли даже перегрузить работу в фоновом режиме с помощью Task.Run в ASP. NET Core и никогда не ждать полученной задачи?
О, конечно, ничто не помешает этому. . NET и ASP. NET позволяют использовать Task.Run
, и ответ будет возвращен пользователю без задержки (при условии, что вы игнорируете задачу, возвращенную из Task.Run
).
Можно ли использовать Task.Run для второй операции и никогда не ждать его, и поэтому очень скоро вернетесь к вызывающей стороне?
Вы говорите, что знаете, что задача может быть потеряна в закрытии приложения. И это правда; так что вполне возможно, что второе удаление может никогда не произойти, и не будет никакой ошибки или сообщения журнала, информирующего вас о факте. Кроме того, поскольку задача игнорируется, уведомление о ее сбое не будет отправлено, поэтому, если что-то не так с кодом удаления, никакие журналы или что-либо еще не уведомят вас о регулярных сбоях. Если вы согласны с этим, тогда используйте fire-and-Forgot.
На ASP. NET Core, вам даже не нужно Task.Run
; Вы можете просто вызвать (асинхронный) метод, который выполняет вторую операцию удаления, а затем игнорировать задачу вместо await
.
Будет работать просто игнорирование задач (с Task.Run
или без), но это имеет отрицательный побочный эффект: ASP. NET вообще не знает о загруженной работе . Поэтому я бы порекомендовал зарегистрировать задачу и что-то отложить приложение до тех пор, пока задачи не смогут завершить . С регистрацией все еще возможно потерять задачи, но регистрация их уменьшает вероятность потери задач.