![](/img/trans.png)
[英]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.