Feedback

VB - COM-Objekte einfach freigeben

Veröffentlicht von am 05.08.2013
(0 Bewertungen)
Auch wenn es nicht mehr unbedingt zwingend notwendig ist, COM-Objekte explizit freizugeben, ist dies im Kontext mancher COM-Umgebungen (z.B. Outlook-AddIns) durchaus ratsam.

Die Freigabe über die statische Methode ReleaseComObject der Marshal-Klasse in den InteropServices ist jedoch ein wenig umständlich. Meistens muss erst noch geprüft werden, ob eine Referenz überhaupt noch gültig ist, Zudem kann eine Prüfung, ob es sich tatsächlich um ein COM-Objekt handelt, auch nicht schaden. Und meistens muss abschließend auch noch die Referenzvariable selbst freigegeben werden.

Das alles lässt sich mit einer Erweiterungsmethode für den Object-Typ in einem Rutsch erledigen.
<Extension()> _
Public Function ReleaseComObject(ByRef thisObject As Object) As Integer
  Dim nRefCounter As Integer = -1

  If thisObject IsNot Nothing Then
    If System.Runtime.InteropServices.Marshal.IsComObject(thisObject) Then
        nRefCounter = System.Runtime.InteropServices.Marshal.ReleaseComObject(thisObject)
    End If
  End If

  thisObject = Nothing
  Return nRefCounter
End Function

Abgelegt unter Interop, COM.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!