Interessantes Ereignis Entsorgungsverhalten
Ich habe in unserer .NET WinForms-App ein interessantes Verhalten festgestellt. Wir haben ein MDI-Formular, dem viele MDI-Kinder hinzugefügt wurden. Diese untergeordneten Formulare hören sich ein "Broadcast" -Ereignis an, bei dem es sich im Wesentlichen um einen Aufruf handelt, sich selbst zu aktualisieren. Das Ereignis wird in einer Basisklasse deklariert und die Listening-Ereignisse in den untergeordneten Formularen hinzugefügt.
Ich habe festgestellt, dass selbst wenn diese untergeordneten Formulare geschlossen sind, die Ereignisse weiterhin betroffen sind, wenn das Ereignis in der Dispose () -Methode nicht explizit entfernt wird.
Was ist die Begründung dafür? Sicher, wenn das Formular geschlossen ist, sollten die Ereignisse getrennt / entsorgt werden? Liegt es daran, dass das eigentliche Ereignis in einer externen Klasse deklariert wird? Das nehme ich an.
Einblick wäre sehr dankbar.
(unter Verwendung von C #, .NET 3.5)