Продолжить основной поток, если рабочий поток возвращает необработанное - PullRequest
2 голосов
/ 28 января 2011

Я использую отражение для создания экземпляров объектов из других сборок.объекты в этих сборках могут запускать другие потоки в течение всего процесса.Автор этой сборки может не правильно обрабатывать исключения в этих рабочих потоках.Проблема в том, что когда они возвращаются необработанными, все приложение перестает выполняться и запускается AppDomain.CurrentDomain.UnhandledException.

Я попытался просто обернуть мой метод вызова в try...catch, но это, похоже, неперехватить исключение (имеет смысл, так как следующий порожденный рабочий поток является фактическим ошибочным потоком)

Есть ли способ справиться с этой ситуацией, не требуя, чтобы разработчики правильно обрабатывали все исключения?

Идея будет аналогична работе служб Windows.просто отказ одного приложения не означает, что Windows Service Host также должен аварийно завершить работу.

Что мне здесь не хватает?

1 Ответ

1 голос
/ 28 января 2011

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

Чтобы предотвратить закрытие домена приложений, вам необходимо загрузить эти «компоненты»."в их собственном частном домене приложений.Это может привести к тому, что они разрушат свой AppDomain, но не все приложение.

Это имеет другие последствия (особенно при передаче данных в и из объектов) и потенциально может значительно усложнить дизайн вашего приложения, поэтомуне то, что я бы предпринял легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...