Если вы хотите, чтобы исключения потоков GUI работали так же, как и исключения, не относящиеся к GUI, чтобы они обрабатывались одинаково, вы можете сделать это:
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
Вот фон:
В управляемом приложении GUI по умолчанию исключения, возникающие в потоке GUI, обрабатываются тем, что назначено для Application.ThreadException, который вы можете настроить следующим образом:
Application.ThreadException +=
new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Исключения, возникающие в других потоках, обрабатываются AppDomain.CurrentDomain.UnhandledException, который можно настроить следующим образом:
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(Program.CurrentDomain_UnhandledException);
Назначение UnHandledException работает точно так же, как вызов Win32 SetUnhandledExceptionFilter.
Если ваша цель - создать мини-дампы и затем использовать их, вам нужно будет использовать средства отладки для Windows, sos.dll. Вам нужно будет производить мини-дампы MiniDumpWithFullMemory.
И тогда, даже тогда, у вас, вероятно, не будет всего, что вы могли бы хотеть. System.Diagnostics.StackTrace для получения стека управляемых вызовов.