GC.Collect与Marshal.ReleaseComObject和RCW

时间:2012-03-28 15:25:16

标签: c# garbage-collection interop

我在C#中有一个COM对象引用,有时我需要通过设置为Null然后重新创建来丢弃它。似乎有一些缓存正在进行,或者可能导致'COM对象已经从它的底层RCW'类型的错误中分离出来。我通过在将对象设置为Null之后立即强制GC.Collect来丢弃RCW,但是这种笨拙且低效的方法很糟糕。

我想使用Marshal.ReleaseComObject,但这只会减少引用计数,问题一直存在,直到GC实际运行。 (更不用说一般来说这也是一个坏主意)

如何确保在重新创建COM参考时,我会获得一个新的RCW并且一切都表现得如此?

0 个答案:

没有答案