c# – 尝试在DllImport函数中没有捕获异常

c# – 尝试在DllImport函数中没有捕获异常,第1张

概述我从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

如果没有,那么可能的程序只是在本机代码中崩溃,执行从不正确地返回到托管代码.

总结

以上是内存溢出为你收集整理的c# – 尝试在DllImport函数中没有捕获异常全部内容,希望文章能够帮你解决c# – 尝试在DllImport函数中没有捕获异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1259756.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存