我们有一个使用COM dll的.NET应用程序,该组件的ThreadingModel是" Appartment"
应用程序总是挂起调用COM接口方法。
DebugDiag分析说明如下
终结器线程可能会发布一个实例 STA COM组件,它等待STA线程卡住 变得可用。要解决此问题,请致电 Marshal.ReleaseComObject清理所有的引用 您在代码中使用的单元线程COM组件 确定性地(立即),而不是等待终结者 线程在以后进行。
在推荐部分,它建议将线程模型更改为" Both"我做了,工作正常,但这不能做,因为我们有一个用户界面,不推荐按照我们的设计。
任何想法我们的.NET应用程序代码中的哪些更改都可以解决此问题。
堆栈跟踪 有两个线程,2和65试图调用COM对象,在线程45上,我猜STA线程 调用堆栈的线程2
调用线程堆栈65