Могу ли я предотвратить завершение работы приложения из-за неперехваченного исключения в другом домене приложений?

У меня проблемы с неправильно работающей библиотекой, которая выдает исключение в финализаторе, что, конечно, приводит к сбою приложения.

Чтобы избежать этого, я попытался загрузить библиотеку в собственном домене приложений, но исключение все еще всплывает на поверхность и приводит к сбою приложения.

Как описано в MSDN, регистрация в AppDomain.UnhandledException не препятствует возникновению исключения. , но я очень удивлен, что нет другого способа перехватить такое исключение в «субдомене приложений».

Как хосты плагинов или приложения, которые используют домены приложений для изолирования потенциально опасного кода, делают, чтобы остановить необработанные исключения? Возможно ли это на самом деле?

Примечание : у меня уже есть другой обходной путь, описанный здесь . Плохой финализатор находится на долгоживущем объекте, который, кажется, собирается только во время завершения работы, поэтому достаточно скрыть эту «фиктивную» ошибку от пользователя. Тем не менее, я считаю этот обходной путь хрупким, поскольку он либо скроет другие, реальные ошибки, либо рискует взорвать мое приложение, если объект будет собран ранее.

8
задан Community 23 May 2017 в 12:11
поделиться