[英]NUnit: Should I check that objects are not null before using them in asserts?
[英]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.