Existe-t-il un moyen d'exécuter du code lorsque l'objet COM est sur le point d'être déconnecté de RCW sans implémenter l'interface IDisposale et l'appel explicite MyObject.Dispose dans le code client?Est-il possible de gérer lorsque l'objet COM est déconnecté de RCW?
Le code ci-dessous ne fonctionne pas. Lorsque le programme entre sous Finalize, ExcelApplication est déjà déconnecté de RCW, et j'obtiens une erreur. Je comprends pourquoi cela arrive, mais je veux avoir une solution.
Je souhaite le faire fonctionner de la manière suivante: lorsque la dernière référence gérée est libérée, le code du sous-programme Finalize est exécuté avant que l'objet COM ne soit déconnecté.
Ma question est - est-ce possible et si c'est alors comment puis-je gérer cet événement dans la classe, sans besoin d'appeler Finalize explicitement de l'extérieur?
classe très simple:
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
Cette classe est utilisée sur la forme - une seule ligne
Dim ExcelRunner comme ExcelRunner = new ExcelRunner
Alors je ferme la forme, et erreur de réception .
Merci
Oui, je souhaite recevoir une notification juste avant que cela ne se produise. – xll
@xll malheureusement ce n'est pas possible. – JaredPar