繁体   English   中英

我应该在离开方法之前将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对象?

退出功能之前,我是否需要将operation设置为null?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM