С# Запустить и забыть для журналов приложений WPF, обработать выход перед ответом

У меня есть приложение, которое должно отправлять журнал при выходе в облачную функцию. Это означает, что получение ответа может занять много времени, если мне не повезет (иногда минуты!). Я не хочу, чтобы мое приложение оставалось в фоновом режиме так долго, поэтому я просто хочу запустить и забыть сообщение журнала. 100% гарантии мне не нужны, но как можно ближе это конечно приятно.

Каков наилучший метод для достижения этого? Я прочитал ответы на этот вопрос, но он нацелен на приложения ASP.Net. . Это все еще применимо для приложения WPF, которое выходит и исчезает, возможно, до того, как сервер когда-либо получит ответ, или в этом случае есть лучшие способы?

Спасибо!


person mottosson    schedule 15.11.2019    source источник
comment
Если что-либо быстро исчезает, так это страница/запрос ASP.Net. Это их жизненный цикл: docs.microsoft.com/ en-us/previous-versions/ms178472(v=vs.140) | Страницы должны быть созданы, обработаны, отправлены пользователю и удалены из памяти как можно скорее. И это касается всех веб-технологий. По сравнению с этим приложение WPF представляет собой тектоническое движение. | Многозадачность обычно приходится выполнять на стороне клиента — это единственное место, где код может жить достаточно долго, чтобы получить ответ.   -  person Christopher    schedule 15.11.2019
comment
Я следую принципу 26. «Выстрели и забудь» — это хорошо, если вы никогда не забудете. | Проглатывание исключений — один из основных грехов обработки исключений. Обычно для этого приходится писать очень плохой улов. Но многозадачность? Задачи «Выстрелить и забыть»? Они печально известны проглатыванием исключений. Вам придется остановить закрытие приложения, пока все запущенные задачи/потоки не будут завершены. И по очевидным причинам у вас должен быть способ прервать их. | При закрытии приложения не так критично - приложение завершится в любом случае. Но мне все равно это не нравится.   -  person Christopher    schedule 15.11.2019