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

本文关键字:对象 com 设置 null 我应该 方法 离开 | 更新日期: 2023-09-27 18:26:27

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

我有的方法

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

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

顺便说一句,如果需要,我该如何处理com对象?

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

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

不,你没有。当方法存在时,即使不将operation变量设置为null,它也将超出作用域。

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

但是,如果你想立即释放COM对象,你可以调用Marshal.ReleaseComObject。你可能想了解一下这个方法,以了解什么时候应该使用它。

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