c# – 尝试在DllImport函数中没有捕获异常
发布时间:2020-12-15 06:48:38 所属栏目:百科 来源:网络整理
导读:我从C#项目调用C函数: [System.Runtime.InteropServices.DllImport("C.dll")]public static extern int FillSlist(out string slist); 接着 try{ FillSlist(out slist);}catch{} C dll受到第三方工具的保护,所以一些代码正在FillSlist被执行之前执行.当第三
我从C#项目调用C函数:
[System.Runtime.InteropServices.DllImport("C.dll")] public static extern int FillSlist(out string slist); 接着 try { FillSlist(out slist); } catch { } C dll受到第三方工具的保护,所以一些代码正在FillSlist被执行之前执行.当第三方代码被执行并且程序停止工作时,会发生很糟糕的事情. “try”都不会隔离问题,也不执行“AppDomain.CurrentDomain.UnhandledException”. 有什么可以帮助将C函数的崩溃与C#调用代码隔离开来吗? 解决方法
这是在CLR 4.0上运行吗?如果是这样 …
如果一个异常没有被捕获在一个开放的catch块中,如你的代码所示,这是因为CLR认为它是一个损坏的状态异常,默认情况下不会被用户代码处理.而是传播并导致进程终止. 这是为了这些类型的异常的原因,没有管理代码可以采取的措施来纠正问题.唯一可能的解决方案是终止进程. 您可以通过向方法添加HandledCorruptedStateException属性来覆盖此行为.但一般来说这是一个坏主意. 更多细节 > http://msdn.microsoft.com/en-us/magazine/dd419661.aspx 如果没有,那么可能的程序只是在本机代码中崩溃,执行从不正确地返回到托管代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |