AppDomain.CurrentDomain.UnhandledException并不总是启动

时间:2010-03-18 15:28:18

标签: .net

我在我们的应用程序中遇到了一个根本没有处理的异常。我真的不知道要调试这个问题是什么,因为应用程序在抛出这个特殊异常时立即关闭(甚至从VS运行)。异常处理是这样设置的:

[STAThread]
[LoaderOptimizationAttribute(LoaderOptimization.MultiDomainHost)]
static void Main()
{
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ApplicationExit += new EventHandler(ApplicationExitHandler);
Application.ThreadException += new ThreadExceptionEventHandler(ThreadExceptionHandler);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionHandler);
...

引发异常的线程以这样的方式启动:

Thread executerThread = new Thread(new ThreadStart(modele.Exporter));
executerThread.SetApartmentState(ApartmentState.STA);
executerThread.Start();

现在,从该线程抛出的每个未处理的异常都会触发我的UnhandledExceptionHandler,除了我遇到的问题。即使我抓住有问题的异常并再次抛出它,应用程序也会静默关闭。 3个处理程序(ApplicationExit,ThreadException,UnhandledException)都没有被触发(没有命中断点)。

在该例外中没有任何例外(详见此处:http://pastebin.com/fCnDRRiJ)。

1 个答案:

答案 0 :(得分:1)

您正在使用调用本机代码的OleDb提供程序。如果本机代码失败并出现某种类型的异常,CLR可以静默关闭该进程。我与Sybase的OleDb提供程序有一些共同的问题,我相信只有一些解决方法可以帮助你,而不是一个特定的解决方案。