Beim Herunterfahren der Anwendung müssen Sie nichts tun, um WindowsFormsHost ordnungsgemäß zu entfernen. Da es von HwndHost abgeleitet ist, wird die Entsorgung gehandhabt, wenn der Dispatcher heruntergefahren wird. Wenn Sie Reflector verwenden, sehen Sie, dass beim Initialisieren von HwndHost ein WeakEventDispatcherShutdown erstellt wird.
Wenn Sie es in einem Dialog verwenden, ist das Beste, was ich vorschlagen kann, OnClosed zu überschreiben und Ihren Host dann zu entsorgen, sonst wird der HwndHost herumhängen, bis der Dispatcher heruntergefahren wird.
Eine einfache Möglichkeit zu testen, wenn dispise aufgerufen wird, ist eine benutzerdefinierte Klasse von WindowsFormsHost abzuleiten und mit verschiedenen Situationen zu spielen. Setzen Sie einen Unterbrechungspunkt in dispose und sehen Sie, wann es angerufen wird.
public class CustomWindowsFormsHost : WindowsFormsHost
{
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
}
Wenn Sie "während des Herunterfahrens" sagen, meinen Sie, dass die App geschlossen wird? Die Kontrolle ist nicht mehr sichtbar? Ein Dialog wird geschlossen? –
Hier meine ich Application Shutdown, aber ich bin auch interessiert in den Dialog schließen. – morechilli