Application.DispatcherShutdownMode Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob die DispatcherQueue-Ereignisschleife beendet wird, wenn alle XAML-Fenster in einem Thread geschlossen werden, oder legt diesen fest.
public:
property DispatcherShutdownMode DispatcherShutdownMode { DispatcherShutdownMode get(); void set(DispatcherShutdownMode value); };
DispatcherShutdownMode DispatcherShutdownMode();
void DispatcherShutdownMode(DispatcherShutdownMode value);
public DispatcherShutdownMode DispatcherShutdownMode { get; set; }
var dispatcherShutdownMode = application.dispatcherShutdownMode;
application.dispatcherShutdownMode = dispatcherShutdownMode;
Public Property DispatcherShutdownMode As DispatcherShutdownMode
Eigenschaftswert
Ein Enumerationswert, der angibt, ob die DispatcherQueue-Ereignisschleife beendet wird, wenn alle XAML-Fenster in einem Thread geschlossen werden. Weitere Informationen finden Sie unter Hinweise zum Standardverhalten.
Hinweise
Dies ist eine Eigenschaft pro Thread. Wenn Sie ihn festlegen, ändert sich die Eigenschaft nur für den aktuellen Thread. Es ist möglich, unterschiedliche Werte für diese Eigenschaft in verschiedenen Threads in Ihrer Anwendung zu haben.
Sie können diese Eigenschaft jederzeit festlegen. Die XAML-Runtime liest die -Eigenschaft jedes Mal, wenn das letzte Fenster eines Threads geschlossen wird.
Wenn die Application.Start-Methode aufgerufen wird (wie beim Start für WinUI-Desktop-Apps), legt die XAML-Runtime für den aktuellen Thread auf fest DispatcherShutdownMode
OnLastWindowClose
. Dies führt dazu, dass die Ereignisschleife der DispatcherQueue beendet wird, wenn alle XAML-Fenster im Thread geschlossen sind.
In einer WinUI Desktop-App möchten Sie möglicherweise, dass Ihr Code weiterhin ausgeführt wird, auch wenn alle XAML-Fenster im Thread geschlossen wurden. Um dies zu erreichen, können Sie diese Eigenschaft auf OnExplicitShutdown
festlegen. Nachdem alle XAML-Fenster geschlossen wurden, wird der Thread weiter ausgeführt. In diesem Zustand können Sie weiterhin Arbeit an der DispatcherQueue planen, Arbeiten für andere Threads ausführen und neue XAML-Fenster anzeigen.
Wenn die Anwendung application.Start nicht aufruft (wie dies in der Regel bei XAML Islands-basierten Anwendungen der Fall ist), wird diese Eigenschaft standardmäßig auf OnExplicitShutdown
verwendet. In diesem Zustand führt die XAML-Runtime keine Aktion aus, um die Ereignisschleife zu beenden, wenn die XAML-Fenster geschlossen werden.
Wenn Sie verwenden OnExplicitShutdown
, müssen Sie die Ereignisschleife selbst beenden, wenn Sie bereit sind, die Ereignisschleife in diesem Thread zu beenden. Um die Ereignisschleife ordnungsgemäß zu beenden, rufen Sie DispatcherQueue.EnqueueEventLoopExit auf. Alternativ können Sie Application.Exit aufrufen, was auch bewirkt, dass die XAML-Runtime PostQuitMessage aufruft.