【发布时间】:2014-10-02 22:44:36
【问题描述】:
使用 Excel 互操作时,我会非常小心,不要隐式创建任何对象(c.f. two dot rule)并确保所有内容都正确发布。
如果我从 COM 对象属性创建 System.Object,该对象是 COM 对象吗?为了澄清,以下面的 cell 对象为例。我需要打电话给Marshal.ReleaseComObject(cell)吗?
public static float RangeLeft(Excel.Worksheet sheet, int row, int col)
{
float returnValue;
object cell = null;
Excel.Range range = null;
try
{
cell = sheet.Cells[row, col];
range = sheet.get_Range(cell, Type.Missing);
returnValue = (float)range.Left;
}
catch (COMException comex)
{
Debug.WriteLine(comex.Message);
throw;
}
finally
{
if (cell != null)
{
Marshal.ReleaseComObject(cell);
cell = null;
}
if (range != null)
{
Marshal.ReleaseComObject(range);
range = null;
}
}
return returnValue;
}
【问题讨论】: