Frage

Der Titel ist darüber. WPF -App mit einigen WCF -Zügen für IPC. Ich rufe Application.Current.Shutdown() Und die App geht glücklich weiter. ich dachte Shutdown sollte nicht mehr aufzuhalten sein.

Vielleicht, weil es aus einem Hintergrund -Thread genannt wird? Muss ich einen Dispatcher fummeln?

War es hilfreich?

Lösung

Sie erhalten eine Ausnahme, wenn ich anrufe Application.Current.Shutdown In einem anderen Thread als dem Hauptfaden würde ich Ihnen also annehmen, wo es bereits richtig "Dispatchfledering" verwendet.

Auf jeden Fall kompiliert und beendet dies eine Anwendung. Wenn der Dispatcher -Bit nicht so aussieht, wie Sie es haben, können Sie sie in den Griff haben:

ThreadStart ts = delegate()
    {
        Dispatcher.BeginInvoke((Action)delegate()
        {
            Application.Current.Shutdown();
        });
     };
 Thread t = new Thread(ts);
 t.Start();

Andere Tipps

Nach meiner Erfahrung müssen alle Themen entweder explizit beendet oder als Hintergrund -Threads gekennzeichnet werden, damit die Anwendung schließt.

Hier ist ein Beispiel dafür, einen Lese -Thread im Hintergrund zu starten:

_readThread = new Thread(new ThreadStart(ReadThread));
_readThread.Name = "Receiver";
_readThread.Priority = ThreadPriority.Highest;
_readThread.IsBackground = true;
_readThread.Start();

Das IsBackground Eigenschaft ist der Schlüssel. Ohne dass der Thread nicht eingestellt wird, wird der Thread nicht eingeschaltet, wenn Sie das Abschalten aufrufen.

Ich erlebe nur Application.Current.Shutdown Ich arbeite nicht, wenn ich aus Visual Studio renne. Innerhalb von Visual Studio (zumindest die 2010 -Version, die ich verwende) Application.Current.Shutdown tut nichts. Wenn ich einen Schritt durchläuft, führt diese Zeile aus und fährt dann fort. Wenn ich das Programm (als .exe) dann von Windows Explorer ausführe Application.Current.Shutdown funktioniert gut.

Es gibt wahrscheinlich eine Erklärung dafür, da während des Debuggens andere Threads aktiv sind, aber ich kann es nicht erklären.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top