在Microsoft Office AddIn中,我们在事件中传递COM对象。以一个具体的案例为例,当Word打开文档时,我们会被调用并传递一个Document对象。那么什么时候需要调用Marshal.ReleaseComObject()呢?
我们最好拥有一个终结器,然后为每个对象的实例增加开销吗(很多!)?还是我们最好拥有一小部分从不被释放的Word COM对象呢?
谢谢 - dave
- 如果我们访问了Document对象,我们需要对它进行释放吗?或者我们可以假设Word已经访问了它并将清理它?
- 如果我们访问Document.Name,它会给我们一个字符串。由于字符串不是COM对象,因此我们不需要清理它 - 对吗?
- 但是,如果我们访问任何返回包装COM对象的类的成员(也就是由成员方法/函数返回的任何类),我们需要对其进行释放 - 对吗?
我们最好拥有一个终结器,然后为每个对象的实例增加开销吗(很多!)?还是我们最好拥有一小部分从不被释放的Word COM对象呢?
谢谢 - dave