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

Should I set com objects to null before leaving a method

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

我有方法

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

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

附带说明一下,如果需要,我该如何处理 com 对象?

Do I need to set operation to null before exiting the function?

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

托管语言使用的 COM 对象在被垃圾收集器终结时会自动处理掉。这意味着当没有人再持有对 COM 对象的引用时,该对象将在一段时间后被释放(取决于垃圾收集器何时决定启动并最终确定该对象)。

但是,如果您想立即释放 COM 对象,可以调用 Marshal.ReleaseComObject。您可能需要阅读有关此方法的信息,以了解何时应使用它。

您想要使用 Marshal.ReleaseComObject 的唯一原因是该对象拥有非常稀缺的资源,您不能等待垃圾收集器为您释放它。