【发布时间】:2012-03-25 10:29:37
【问题描述】:
假设我有一个组件正在使用 Workbook 对象做某事,并且在该方法主体的中间某处我调用了另一个类的某个方法。 例如:
public class MainComponent
{
public void MyMainMethod()
{
OtherComponent otherComponent = new OtherComponent();
Workbook document;
// some work with workbook object
// working with document and worksheet objects.
otherComponent.MethodCall(document);
// some work with workbook object and it's worksheets.
foreach(Worksheet sheet in document.Workheets)
// do something with sheet
}
}
public class OtherComponent
{
public void MethodCall(Workbook document)
{
string worksheetNames = "";
foreach(Worksheet sheet in document.Worksheets)
worksheetNames += sheet.Name;
Console.WriteLine(worksheetNames);
}
}
在那个 otherComponent.MethodCall(document);我正在使用文档,并且正在遍历它的工作表。
编辑更具体的问题。我是否应该在 otherComponent.MethodCall(document) 中的文档和工作表上调用 ReleaseCOMObject?
我从来没有对我应该如何管理这个非托管代码有任何好的解释。 如果有人能向我解释这一点,我将不胜感激。
【问题讨论】:
-
一般来说,创建对象的方法应该负责清理。在这种情况下,“清理”的组成部分有些模糊。您应该发布初始化和清理代码,以及对您所做的“可能会在以后引起问题”的更多解释。
标签: c# com excel-interop