STA COM组件上的方法调用挂起

时间:2017-09-25 16:56:39

标签: com com-interop sta mta

我们有一个使用COM dll的.NET应用程序,该组件的ThreadingModel是" Appartment"

应用程序总是挂起调用COM接口方法。

DebugDiag分析说明如下

  

终结器线程可能会发布一个实例   STA COM组件,它等待STA线程卡住   变得可用。要解决此问题,请致电   Marshal.ReleaseComObject清理所有的引用   您在代码中使用的单元线程COM组件   确定性地(立即),而不是等待终结者   线程在以后进行。

在推荐部分,它建议将线程模型更改为" Both"我做了,工作正常,但这不能做,因为我们有一个用户界面,不推荐按照我们的设计。

任何想法我们的.NET应用程序代码中的哪些更改都可以解决此问题。

堆栈跟踪 有两个线程,2和65试图调用COM对象,在线程45上,我猜STA线程 调用堆栈的线程2

enter image description here

调用线程堆栈65

enter image description here

0 个答案:

没有答案