Проверка лучшей практики здесь.thread pool error trapping
Я звоню в ThreadPool для запуска процесса Async, в частности, отправляя SSL-письмо с приложением, которое, кажется, занимает много времени.
Это всего лишь тестовый код, я думал, что я брошу это в Try Catch, просто что-то не сработает. Но будет ли поток когда-либо возвращаться сюда? Я проверил это закрытие веб-страницы, браузера, нажав кнопку «Назад» на странице. Электронная почта всегда делает это.
Try
System.Threading.ThreadPool.QueueUserWorkItem(AddressOf DoAsyncWork) '
Catch ex As Exception
Throw ex
Exit Sub
End Try
Я не пытаюсь вызвать сбой, но, я думаю, но я хотел бы знать, как лучше всего ловушку, если поток не удастся.
Protected Sub DoAsyncWork(ByVal state As Object)
Dim oMyObject As New sendSSLemail
oMyObject.SSL(userName, , strMessageBody, emailAdd, , permFileLocation, , "CodeMsg")
End Sub
Из любопытства, какая версия рамки вы используете? – Cameron
В чем смысл улавливания исключения, ничего не делая с ним, а затем реорганизовывая его, используя «Throw ex», который теряет трассировку стека исходного исключения? – Alex
Шансы, что QUWI генерирует исключение, равны нулю. Вы должны иметь дело с ним в DoAsyncWork(). Это навсегда противно, огонь и забыть очень трудно справиться, исключения не позволят вам забыть. Подумайте о том, как использовать BackgroundWorker или Task, чтобы вы могли легко маршалировать неудачу обратно в поток пользовательского интерфейса. –