У меня есть небольшое приложение WinForms, которое использует объект BackgroundWorker для выполнения длительной операции.
Фоновая операция вызывает случайные исключения, обычно когда кто-то открывает файл, который создается заново.
Независимо от того, запускается код из среды IDE или нет. .NET выдает диалоговое окно с сообщением об ошибке, информирующее пользователя о возникновении необработанного исключения. Компиляция кода с использованием конфигурации Release также не меняет этого.
Согласно MSDN:
Если операция вызывает исключение, которое ваш код не обрабатывает, BackgroundWorker перехватывает исключение и передает его в обработчик событий RunWorkerCompleted, где оно отображается как свойство Error объекта System.ComponentModel .. ::. RunWorkerCompletedEventArgs. Если вы работаете в отладчике Visual Studio, отладчик остановится в той точке обработчика событий DoWork, где возникло необработанное исключение.
Я ожидаю, что эти исключения будут возникать время от времени, и хотел бы обрабатывать их в событии RunWorkerCompleted, а не в DoWork. Мой код работает правильно, и ошибка обрабатывается правильно в событии RunWorkerCompleted, но я не могу, хоть убей, понять, как остановить диалоговое окно ошибки .NET с жалобой на возникновение «Необработанного исключения».
Разве BackgroundWorker не должен автоматически обнаруживать эту ошибку? Разве это не то, что говорится в документации MSDN? Что мне нужно сделать, чтобы сообщить .NET, что эта ошибка обрабатывается, в то же время позволяя исключению распространяться в свойстве Error RunWorkerCompletedEventArgs?