c#多线程如何锁定com组件

ldxab ldxab 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在做项目的时候遇到一个问题:我们的算法引用了matlab函数,所以我们将matlab函数做成了com组件,然后由c#调用,因为com组件是非托管资源,所以节省内存空间避免每次都实例化一个com类,我们将其定义为一个静态变量在程序中引用,一开始我们用的是串行的方式,没有任何问题,后来我们为了加快程序运行速度,将代码分为几个线程同时跑,因为是静态变量所以我们要加锁防止线程冲突,但是现在在多线程跑到引用的代码处有时跑着跑着不知什么时候就会出写乱七八糟的错(比如未处理的comexception,或者调用com就不返回了,一直死在那里等等),好像是没有锁住,我们用过很多锁,(Monitor,lock,Mutex,ManualResetEvent,AutoResetEvent,WaitHandler)等等,一直没有用,,是不是锁不能锁住非托管资源呢?请问还有什么更好的方法么?
...全文
评论 12
收藏 已收藏
分享
返回顶部
ldxab
C# 111,128 成员 642,537 内容