我能打给马修吗?在终结器中释放ecomobject

本文关键字:释放 ecomobject 马修吗 | 更新日期: 2023-09-27 18:13:25

我在我们的代码基础上发现了这样的代码:

if (disposing)
{
    ....
}
Marshal.ReleaseComObject(comObject)

comObject实际上是一个。net对象(RCW,对吧?)从终结器调用它安全吗?

有没有可能它已经被释放了?

我能打给马修吗?在终结器中释放ecomobject

正如Hans Passant所说:

不,这是不安全的,RCW已经有了自己的终结器。哪一个首先,使代码完全不必要。更严重的,由于完成顺序不确定,您可能会调用在已经销毁的对象上使用ReleaseComObject()

所以调用必须在if (dispose)内部