我能打给马修吗?在终结器中释放ecomobject
本文关键字:释放 ecomobject 马修吗 | 更新日期: 2023-09-27 18:13:25
我在我们的代码基础上发现了这样的代码:
if (disposing)
{
....
}
Marshal.ReleaseComObject(comObject)
comObject实际上是一个。net对象(RCW,对吧?)从终结器调用它安全吗?
有没有可能它已经被释放了?
正如Hans Passant
所说:
不,这是不安全的,RCW已经有了自己的终结器。哪一个首先,使代码完全不必要。更严重的,由于完成顺序不确定,您可能会调用在已经销毁的对象上使用ReleaseComObject()
所以调用必须在if (dispose)内部