非托管例外

时间:2011-03-19 18:57:07

标签: c# wpf .net-4.0

我有一个从后台线程调用非托管库的方法。我在非托管调用周围放了一个try catch块,但它从未被捕获过。正好及时的调试器会捕获它。我做错了什么?

    public bool TurnOn()
    {
        var connectionSucceeded = false;
        try
        {
            connectionSucceeded = turnOn(); //Unmanaged call
        }
        catch
        {
            connectionSucceeded = false; //Never reaches this block                
        }

        return connectionSucceeded;
    }

2 个答案:

答案 0 :(得分:1)

调试器设置是否在抛出时处理非托管异常?

检查调试>例外

中的设置

另外,直接被调用的线程上是否存在非托管异常 - 而不是在不同线程上的某些异步操作中?

答案 1 :(得分:1)

我完全同意 Stuart 回答..在这种情况下,您可以尝试在应用程序级别捕获异常:

AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionEventRaised;

Plz也看到了这个答案:AppDomain.CurrentDomain.UnhandledException not firing without debugging