У меня возникают проблемы с плохой библиотекой, которая генерирует исключение в финализаторе, что, конечно же, приводит к сбою приложения.Могу ли я предотвратить неперехваченное исключение в другом приложении AppDomain при закрытии приложения?
Чтобы избежать этого, я попробовал загрузить библиотеку в свой собственный AppDomain, но исключение все еще пузырится на поверхности и вылетает из приложения.
Как указано в MSDN, регистрация на AppDomain.UnhandledException
не мешает исключению из пузырьков, но я совершенно удивлен тем, что нет другого способа поймать такое исключение в «sub AppDomain».
Как блокировать хосты или приложения, использующие потенциально опасные коды приложений AppDomains, чтобы остановить необработанные исключения? Действительно ли это возможно?
Примечание: У меня уже есть другое обходное решение, описанное here. Плохой финализатор находится на долгоживущем объекте, который, кажется, собирается только во время выключения, поэтому достаточно скрыть эту «фиктивную» ошибку от пользователя. Тем не менее, я нахожу этот обходным хрупким, так как он либо скроет другие, реальные ошибки, либо рискует взорвать мое приложение, если объект будет собран ранее.
Почему вы не можете поймать исключение – rerun
Исключение выбрано в Finalizer, который выполняется в своем потоке, управляемом CLR, поэтому я не могу поместить обработчик исключений в поток. Кроме того, это библиотека «наследия, unmaintaiend и важного компонента без исходного кода» ... –