【发布时间】:2013-10-15 14:06:06
【问题描述】:
我一直无法弄清楚如何搜索对这种怀疑的确认,但我看到证据表明在一个线程上创建的 COM 对象不再可用于其他线程(已与其底层 RCW 分离的 COM 对象不能使用)一旦代码停止在创建它的线程上执行(并且该线程可能已经终止)。这是一个非常难以追踪的问题,因为我在整个代码中都调用了System.Runtime.InteropServices.Marshal.ReleaseComObject,但我无法确定其中任何一个被调用导致此错误。最后我得出的结论是,当辅助线程停止执行时,COM 对象显然被隐式释放了。这可能是真的吗?这是记录在案的行为吗?
【问题讨论】:
-
这不应该是真的。您也很少需要使用
ReleaseComObject。你确定你使用正确吗? -
我正在使用
ReleaseComObject,因为如果第 3 方组件中的某些对象检测到库中的另一个对象仍在使用中(他们不希望它们在同时)。因此,至少在某些情况下,我们必须非常确定地发布我们的引用。
标签: c# .net vb.net com com-interop