我有一个我在c#中引用的vb6对象,即Process,它有一组操作。
我有方法
public double GetWidth(Process process, String operationName)
{
Operation operation=process.GetOperation(operationName);
return operation.GetValue("Width");
}
在退出函数之前,是否需要将操作设置为null?我不想处理它包含的进程或对象,但我不确定当我最终需要处理进程时操作实例是否会导致。
另外,如果需要,我该如何处理com对象?
答案 0 :(得分:2)
在退出函数之前,是否需要将操作设置为null?
不,你没有。当该方法存在时,operation
变量将超出范围,即使您未将其设置为null。
从托管语言使用的COM对象在由垃圾回收器完成时自动处理。这意味着当没有人持有对COM对象的引用时,该对象将在一段时间后释放(取决于垃圾收集器何时决定启动并完成对象)。
但是,如果要立即释放COM对象,可以调用Marshal.ReleaseComObject。您可能希望了解此方法以了解何时应该使用它。
您希望使用Marshal.ReleaseComObject
的唯一原因是该对象拥有非常稀缺的资源,您无法等待垃圾收集器为您发布它。