none
Aus der MSDN-Hotline: Process.Close funktioniert nicht mit Windows Forms RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,
    heute wurde uns bei der MSDN Hotline unter anderem folgende Frage gestellt:

    Mein Windows-Forms-Programm reagiert nicht auf System.Diagnostics.Process.Close() . Was kann man dagegen tun?

    Unsere Antwort bzw. unser Lösungsvorschlag darauf war:

    Wenn Sie eine Windows-Forms-Anwendung beenden möchten, sollten Sie stattdessen Process.CloseMainWindow() verwenden. Diese Methode schließt das Hauptfenster und löst dort auch das FormClosing-Event aus. Je nach Anwendung genügt dieser Aufruf meist, um das Programm korrekt zu beenden. Sie können aber auf Nummer sicher gehen und den Prozess so beenden:

    Process p = .....;
    p.CloseMainWindow();
    p.WaitForExit();
    p.Close();
    

     

    CloseMainWindow benötigt allerdings ein korrektes Window-Handle. Sie sollten deshalb sicherstellen, dass Ihr Prozess die Eigenschaft MainWindowHandle gesetzt hat (also größer Null ist). Versteckte Fenster und nicht in der Taskbar registrierte Fenster haben diese Eigenschaft nicht gesetzt. Im Fall des Kunden hat diese Eigenschaft das Schließen verhindert:

    myForm.ShowInTaskbar = false;
    
    
    Die Lösung war hier, das Fenster einfach in der Taskbar anzeigen zu lassen.
    Möglicherweise hilft auch ein Message Filter weiter. Auf jeden Fall können Alternativen mit (anonymen) Pipes oder via Messages Queues realisiert werden.

     

    Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.

    Viele Grüße,
    Jonathan Best
    MSDN Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline: http://www.msdn-online.de/Hotline
    MSDN Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    Es gelten für die MSDN Hotline und dieses Posting diese Nutzungsbedingungen , Hinweise zu Markenzeichen Informationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die MSDN Hotline .

    Donnerstag, 9. September 2010 15:34