Est-il possible de gérer lorsque l'objet COM est déconnecté de RCW?
Question
Est-il possible d'exécuter du code lorsque l'objet COM est sur le point d'être déconnecté de RCW sans mettre en oeuvre l'interface IDisposale et MyObject.Dispose d'appel explicite dans le code client?
Le code ci-dessous ne fonctionne pas. Lorsque le programme entre Finaliser sous, ExcelApplication est déjà déconnecté de RCW, et j'obtiens l'erreur. Je comprends pourquoi cela arrive, mais je veux une solution.
Je veux le faire fonctionner de la façon suivante:. Lors de la dernière référence géré est libéré, le code de sous Finaliser est exécutée avant que l'objet COM est déconnecté
Ma question est - est-il possible à tous et si elle est alors comment puis-je gérer cet événement à l'intérieur de la classe, sans avoir besoin d'appeler explicitement à l'extérieur Finaliser
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 - juste une seule ligne
Dim ExcelRunner comme ExcelRunner = new ExcelRunner
Alors je ferme la forme, et recevoir l'erreur.
Merci
La solution
On dirait que vous souhaitez recevoir une notification au sujet d'un RCW étant déconnecté juste avant qu'il arrive. Dans ce cas il n'y a malheureusement pas une telle façon de connecter en cela. Vos besoins de code pour compte au lieu de la possibilité que c'est déconnecté de manière inattendue