关于System.Runtime.InteropServices.SEHException的异常处理

最近做一个项目,采用C#前端程序,调用C++写的dll库。过程中发现,多线程调用同一个dll内部构建的对象时,存在2个以上对象,发生System.Runtime.InteropServices.SEHException错误,而单个dll对象,或debug模式下,或采用C++程序调用时,程序都能正常运行。

因为不能用调试方式检测代码问题,只能采用分段设置输出变量方式,反复调试,最终定位到一个局部类变量上,将此变量作为类的私有变量,则运行成功,能查到这个问题也是幸运。

在网上也查到了原因,是因为C#的回收机制,会自动清除dll类里的这个局部变量,至于为什么Release里会发生这个问题,估计与Release会自动跳过一些系统认为无用的变量有关。

记录此问题,以备后查。有知道此类问题确切原因的老兄请告知。

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值