Application.DispatcherShutdownMode 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定值,這個值會指定當線程上的所有 XAML 視窗關閉時,DispatcherQueue 事件迴圈是否結束。
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
屬性值
列舉值,指定當線程上的所有 XAML 視窗關閉時,DispatcherQueue 事件迴圈是否結束。 如需默認行為,請參閱。
備註
這是每一線程屬性。 當您設定它時,屬性只會變更目前線程。 在應用程式中的不同線程上,此屬性可能會有不同的值。
您可以隨時設定此屬性。 每次關閉任何線程的最後一個視窗時,XAML 運行時間都會讀取 屬性。
當呼叫 Application.Start 方法 (,因為 WinUI Desktop 應用程式在啟動時) ,XAML 執行時間會針對目前的線程設定DispatcherShutdownMode
OnLastWindowClose
為 。 這會導致 DispatcherQueue 的事件循環在線程上的所有 XAML 視窗關閉時結束。
在 WinUI Desktop 應用程式中,您可能希望程式代碼在線程上的所有 XAML 視窗都關閉之後,仍會繼續執行。 若要完成這項作業,您可以將此屬性設定為 OnExplicitShutdown
。 然後,在所有 XAML 視窗都關閉之後,線程會繼續執行。 在此狀態下,您仍然可以在 DispatcherQueue 上排程工作、在其他線程上執行工作,以及顯示新的 XAML 視窗。
如果應用程式未呼叫 Application.Start (,通常是 XAML Islands 型應用程式) 的情況,此屬性會預設為 OnExplicitShutdown
。 在此狀態中,XAML 運行時間不會採取任何動作,以在關閉 XAML 視窗時結束事件迴圈。
當您使用 OnExplicitShutdown
時,當您準備好讓該線程上的事件循環結束時,您必須自行結束事件迴圈。 若要正確結束事件迴圈,請呼叫 DispatcherQueue.EnqueueEventLoopExit。 或者,您也可以呼叫 Application.Exit,這也會讓 XAML 運行時間呼叫 PostQuitMessage。