Limpie los objetos de interoperabilidad de Excel con IDisposable

En mi empresa, la forma común de liberar objetos de interoperabilidad de Excel es usar IDisposable de la siguiente manera:

Public Sub Dispose() Implements IDisposable.Dispose
    If Not bolDisposed Then
        Finalize()
        System.GC.SuppressFinalize(Me)
    End If
End Sub

Protected Overrides Sub Finalize()
    _xlApp = Nothing
    bolDisposed = True
    MyBase.Finalize()
End Sub

dónde_xlApp fue creado en el constructor de la siguiente manera:

Try
    _xlApp = CType(GetObject(, "Excel.Application"), Excel.Application)
Catch e As Exception
    _xlApp = CType(CreateObject("Excel.Application"), Excel.Application) 
End Try

Y el cliente usa elusing-statement para ejecutar código sobre objetos de interoperabilidad de Excel.

Evitamos completamente usar elregla de dos puntos. Ahora comencé a investigar cómo liberar objetos de interoperabilidad (Excel) y casi todas las discusiones que encontré al respectoCómo limpiar correctamente los objetos de interoperabilidad de Excel oLiberar objetos de Excel utilizan principalmente Marshal.ReleaseComObject (), ninguno de ellos utiliza la interfaz IDisposable.

Mi pregunta es: ¿Hay alguna desventaja al usar la interacción IDisposable para liberar objetos de interoperabilidad de Excel? Si es así, ¿cuáles son estas desventajas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta