我有一个从后台线程调用非托管库的方法。我在非托管调用周围放了一个try catch块,但它从未被捕获过。正好及时的调试器会捕获它。我做错了什么?
public bool TurnOn()
{
var connectionSucceeded = false;
try
{
connectionSucceeded = turnOn(); //Unmanaged call
}
catch
{
connectionSucceeded = false; //Never reaches this block
}
return connectionSucceeded;
}
答案 0 :(得分:1)
调试器设置是否在抛出时处理非托管异常?
检查调试>例外
中的设置另外,直接被调用的线程上是否存在非托管异常 - 而不是在不同线程上的某些异步操作中?
答案 1 :(得分:1)
我完全同意 Stuart 回答..在这种情况下,您可以尝试在应用程序级别捕获异常:
AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionEventRaised;
Plz也看到了这个答案:AppDomain.CurrentDomain.UnhandledException not firing without debugging