[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函数中没有捕获异常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)