我应该在离开方法之前将com对象设置为null

时间:2015-12-10 15:09:56

标签: c# com-interop

我有一个我在c#中引用的vb6对象,即Process,它有一组操作。

我有方法

public double GetWidth(Process process, String operationName)
{
   Operation operation=process.GetOperation(operationName);
   return operation.GetValue("Width");
}

在退出函数之前,是否需要将操作设置为null?我不想处理它包含的进程或对象,但我不确定当我最终需要处理进程时操作实例是否会导致。

另外,如果需要,我该如何处理com对象?

1 个答案:

答案 0 :(得分:2)

  

在退出函数之前,是否需要将操作设置为null?

不,你没有。当该方法存在时,operation变量将超出范围,即使您未将其设置为null。

从托管语言使用的COM对象在由垃圾回收器完成时自动处理。这意味着当没有人持有对COM对象的引用时,该对象将在一段时间后释放(取决于垃圾收集器何时决定启动并完成对象)。

但是,如果要立即释放COM对象,可以调用Marshal.ReleaseComObject。您可能希望了解此方法以了解何时应该使用它。

您希望使用Marshal.ReleaseComObject的唯一原因是该对象拥有非常稀缺的资源,您无法等待垃圾收集器为您发布它。