Hallo zusammen,
ich würde gerne wissen was ich genau tun muss wenn ich eine Instanz von meiner Klasse richtig beenden möchte. Diese enthält verschiedene Objekte u.a. auch ein Excel.Workbook. Dieses sollte ich beim Disposen ja auch schließen oder? Ich kann mit den Kommentaren aus dem VB Code nichts anfange, was ist mit verwaltete Objekten und nicht verwaltete Objekten gemeint? Was muss ich tun bei den TODO stellen? Das hat es mir ja alles automatisch eingefügt. Ich hab jetzt einfach mal alle Objekte auf Nothing gesetzt und die BindingSource disposed, stimmt das so? Fehlt noch was?
ich würde gerne wissen was ich genau tun muss wenn ich eine Instanz von meiner Klasse richtig beenden möchte. Diese enthält verschiedene Objekte u.a. auch ein Excel.Workbook. Dieses sollte ich beim Disposen ja auch schließen oder? Ich kann mit den Kommentaren aus dem VB Code nichts anfange, was ist mit verwaltete Objekten und nicht verwaltete Objekten gemeint? Was muss ich tun bei den TODO stellen? Das hat es mir ja alles automatisch eingefügt. Ich hab jetzt einfach mal alle Objekte auf Nothing gesetzt und die BindingSource disposed, stimmt das so? Fehlt noch was?
VB.NET-Quellcode
- Public Class EQ_Document
- Implements IDisposable
- Private WithEvents m_EQBindingList As New EQ_BindingList(Of EQ_Component)
- Private WithEvents m_Binding As New System.Windows.Forms.BindingSource
- Private m_DataSheets As New EQ_DataSheetCollection
- Private m_DocSettings As New EQ_DocSettings
- Private m_EQwb As Excel.Workbook = Nothing
- Private m_FileName As String = String.Empty
- Public Sub New(ByVal doc_filename As String)
- m_Binding.DataSource = m_EQBindingList
- m_EQwb As Excel.Workbook = xlApp.Workbooks.Open(FullFilename, False, True)
- m_FileName = doc_filename
- End Sub
- .....'hier kommt der ganze andere code ....
- #Region "IDisposable Support"
- Private disposedValue As Boolean ' So ermitteln Sie überflüssige Aufrufe
- ' IDisposable
- Protected Overridable Sub Dispose(disposing As Boolean)
- If Not Me.disposedValue Then
- If disposing Then
- ' TODO: Verwalteten Zustand löschen (verwaltete Objekte).
- m_Binding.Dispose()
- End If
- m_EQBindingList = Nothing
- m_Binding = Nothing
- m_DataSheets = Nothing
- m_EQwb = Nothing
- m_DocSettings = Nothing
- ' TODO: Nicht verwaltete Ressourcen (nicht verwaltete Objekte) freigeben und Finalize() unten überschreiben.
- ' TODO: Große Felder auf NULL festlegen.
- End If
- Me.disposedValue = True
- End Sub
- ' TODO: Finalize() nur überschreiben, wenn Dispose(ByVal disposing As Boolean) oben über Code zum Freigeben von nicht verwalteten Ressourcen verfügt.
- 'Protected Overrides Sub Finalize()
- ' ' Ändern Sie diesen Code nicht. Fügen Sie oben in Dispose(ByVal disposing As Boolean) Bereinigungscode ein.
- ' Dispose(False)
- ' MyBase.Finalize()
- 'End Sub
- ' Dieser Code wird von Visual Basic hinzugefügt, um das Dispose-Muster richtig zu implementieren.
- Public Sub Dispose() Implements IDisposable.Dispose
- ' Ändern Sie diesen Code nicht. Fügen Sie oben in Dispose(disposing As Boolean) Bereinigungscode ein.
- Dispose(True)
- GC.SuppressFinalize(Me)
- End Sub
- #End Region
- End Class