C'è un modo per gestire quando l'oggetto COM è disconnesso dalla RCW?
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
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