2013-07-12 43 views
0

如何實現處理一個類的對象作爲不實現IDisposable的成員?如何實現當一個類有多個成員時處置

請參閱下面例子來知道我的意思:

Public Class MyClass 
    Implements IDisposable 

    private emp as EmpClass 
    private dept as DeptClass 

    ' EmpClass and DeptClass doesn't implemented IDisposable interface. 

    ' IDisposable 
    Protected Overridable Sub Dispose(disposing As Boolean) 
     If Not Me.disposedValue Then 
      If disposing Then 
      emp = Nothing ' --> Can't call Dispose method so I set to null 
      dept = Nothing ' --> Can't call Dispose method so I set to null 
      End If 
     End If 
     Me.disposedValue = True 
    End Sub 
End Class 

從以上,所有的管理對象,我可以做必要的更新。所以請建議是代碼確定。

編輯

當我試圖創建MyClass的實例,編譯器給了我,我必須實現IDisposable錯誤。以下是我的調用代碼。

Using ctx = MyFactory.CreateMyClass() 
    'DO Something 
End Using 
+1

問題是:爲什麼你實現'IDisposable'呢? – sloth

+0

好問題,我附上我的上面的實際問題,回答你的問題。 –

+1

後續問題:爲什麼你想用'Using'語句來使用你的類? – sloth

回答

5

MS

主要採用此接口的是釋放非託管資源。 當不再使用該對象時,垃圾收集器會自動釋放分配給被管對象的內存。但是,並不是 可以預測垃圾回收何時發生。此外,垃圾收集器不知道非託管資源,如 窗口句柄或打開文件和流。

因此,如果您的類不使用流,文件或非託管對象,則不需要調用Dispose或實現IDisposable。 可以在配置的其他東西不再需要聽衆

相關問題