Ядро Asp.net веб-задачи Api Fire и Forget BG - PullRequest
0 голосов
/ 08 ноября 2019

Я регистрирую каждый запрос в своем веб-интерфейсе asp.net core 2.2. Я размещаю журнал на внешний сервер, вращая метод Task.Run для Fire и Forget. Но это исключение, бросающее и затрагивающее основной поток. Есть ли способ запустить и забыть в основном веб-интерфейсе asp.net?

Спасибо, Subbiah K

1 Ответ

0 голосов
/ 08 ноября 2019

Если ваш метод журнала представляет собой асинхронный метод, подобный следующему:

public async Task SendLog(Log mylog)
{
    // some async logic.
}

Вы можете просто вызвать его с помощью:

SendLog(log).ConfigureAwait(false);

Процесс отправки продолжится и не заблокирует ваш текущийthread.

Ссылка: https://stackoverflow.com/a/53184241/8676371


Но если вы хотите обрабатывать исключение асинхронно, вы можете сделать:

  SendLog(log).
    ContinueWith(t => Console.WriteLine(t.Exception), TaskContinuationOptions.OnlyOnFaulted);

Это позволит вамиметь дело с исключением в потоке, отличном от основного потока. Это означает, что вам не нужно «ждать» вызова SendLog () из исходного потока;но все же позволяет вам делать что-то с исключением - но только если возникает исключение.

Ссылка: https://stackoverflow.com/a/15524271/8676371

...