Возможно, все приложение должно умереть, если у вас есть необработанное исключение. Необработанное исключение означает, что ваша программа находится в неизвестном / неопределенном состоянии, и любая дальнейшая обработка или взаимодействие с пользователем может привести к повреждению состояния программы или, что еще хуже, к повреждению данных.
Вы правильно делаете, обрабатывая исключения в вашей работе с потоками. Насколько я знаю, у приложения .NET нет возможности «изящно» справиться с необработанными исключениями в фоновых потоках - они будут всегда завершать процесс.
Некоторые классы .NET Framework, такие как компонент BackgroundWorker
и параллельная библиотека задач в .NET 4, упрощают многопоточность и выполняют большую часть грязной работы по обработке исключений для вас. , поэтому, если вы можете использовать эти вместо , реализующие ваш собственный многопоточный код, то вам определенно следует это сделать. Но если они не могут помочь вам в определенных обстоятельствах, если вы должны использовать ThreadPool
или чистый Thread
, убедитесь, что не пропускаются необработанные исключения.