Domanda

C'è un modo per eseguire codice quando l'oggetto COM è in procinto di essere scollegato dal RCW senza implementare l'interfaccia IDisposale e MyObject.Dispose chiamata esplicita nel codice client?

Il codice qui sotto non funziona. Quando programma entra Finalizza sub, ExcelApplication è già scollegato dalla RCW, e ottengo l'errore. Capisco perché succede, ma voglio ottenere una soluzione.

Voglio fare funzionare nel modo seguente:. Quando viene rilasciato lo scorso riferimento gestito, codice Finalizza sub viene eseguito prima oggetto COM viene scollegato

La mia domanda è -? È possibile a tutti e se è allora come posso gestire questo evento all'interno della classe, senza bisogno di chiamare esplicitamente Finalize dall'esterno

Molto semplice classe:

Public Class ExcelRunner

  Dim ExcelApplication As Excel.Application

  Public Sub New()

    ExcelApplication = New Excel.Application
    ExcelApplication.Visible = True

  End Sub

  Protected Overrides Sub Finalize()

    MyBase.Finalize()
    ExcelApplication.Quit()

  End Sub

End Class

Questa classe viene utilizzata in forma - solo una singola linea

Dim ExcelRunner come ExcelRunner = nuova ExcelRunner

Poi chiudo la forma, e ricevo l'errore.

Grazie

È stato utile?

Soluzione

Sembra che si desidera ricevere una notifica relativa a un RCW essere scollegata appena prima che accada. Se è così, purtroppo, non c'è alcun modo per collegare in quello. Le vostre esigenze di codici a invece rappresentano la possibilità che è inaspettatamente disconnesso

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top