Feedback

VB - Disposable als Basis-Klasse

Veröffentlicht von am 14.08.2013
(1 Bewertungen)
Nur einfach die Dispose-Methode der IDisposable-Schnittstelle zu implementieren, reicht eigentlich nicht ganz aus. Wie man es richtig machen sollte, sieht man spätestens nach dem Einfügen der Anweisung "Implements IDisposable" in eine Klasse und anschließendem Betätigen der Enter-Taste: in einer VB-Klasse fügt Visual Studio automatisch einen ganzen Wust an Code hinzu - gespickt mit Kommentaren, die man erst einmal wieder aufräumen muss ...

Möchte man eine Klasse von einer bestehenden Klasse ableiten, kommt man um eine Implementierung von Hand oder solchermaßen unterstützt nicht herum. Möchte man jedoch eigene, "frische" mit der Schnittstelle IDisposable versehene Klassen erstellen, genügt es, sich die Arbeit ein einziges Mal zu machen - in der Basis-Klasse "Disposable", von der man ja wiederum beliebige weitere Klassen ableiten kann.

Damit man es in davon abgeleiteten Klassen bequemer hat, bietet sie die beiden überschreibbaren Methoden "DisposeManaged" und "DisposeUnmanaged", in denen man ganz einfach den jeweils zum Aufräumen benötigten Code unterbringen kann.
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

Public MustInherit Class Disposable
	Implements IDisposable

	Protected Sub New()
		'
	End Sub

	Protected Overrides Sub Finalize()
		Me.Dispose(False)
		MyBase.Finalize()
	End Sub

	Private mIsDisposed As Boolean

	<Browsable(False)> _
	Public ReadOnly Property IsDisposed As Boolean
		Get
			Return mIsDisposed
		End Get
	End Property

	Public Sub Dispose() Implements IDisposable.Dispose
		Me.Dispose(True)
		GC.SuppressFinalize(Me)
	End Sub

	Private Sub Dispose(disposing As Boolean)
		If Not mIsDisposed Then
			mIsDisposed = True
			If disposing Then
				SyncLock Me
					Me.DisposeManaged()
				End SyncLock
			End If

			Me.DisposeUnmanaged()
		End If
	End Sub

	Protected Overridable Sub DisposeManaged()
		'
	End Sub

	Protected Overridable Sub DisposeUnmanaged()
		'
	End Sub

End Class

Abgelegt unter IDisposable, Dispose, Klassen, Vererbung.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!