次の方法で共有


Application.DispatcherShutdownMode プロパティ

定義

スレッド上のすべての 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 ランタイムは現在のスレッドに 対して にOnLastWindowClose設定DispatcherShutdownModeされます。 これにより、スレッド上のすべての XAML ウィンドウが閉じられると、 DispatcherQueue のイベント ループが終了します。

WinUI Desktop アプリでは、スレッド上のすべての XAML ウィンドウが閉じられた後でも、コードを実行し続ける必要がある場合があります。 これを実現するには、このプロパティを に OnExplicitShutdown設定します。 その後、すべての XAML ウィンドウが閉じた後も、スレッドは実行され続けます。 この状態でも、 DispatcherQueue での作業のスケジュール設定、他のスレッドでの作業の実行、新しい XAML ウィンドウの表示を行うことができます。

アプリケーションが Application.Start を 呼び出さない場合 (通常は XAML Islands ベースのアプリケーションの場合と同様)、このプロパティの既定値 OnExplicitShutdownは になります。 この状態では、XAML ウィンドウが閉じられると、XAML ランタイムはイベント ループを終了するアクションを実行しません。

を使用 OnExplicitShutdownする場合は、そのスレッドのイベント ループが終了する準備ができたら、イベント ループを自分で終了する必要があります。 イベント ループを正しく終了するには、 DispatcherQueue.EnqueueEventLoopExit を呼び出します。 または、 Application.Exit を呼び出すこともできます。これにより、XAML ランタイムが PostQuitMessage を呼び出すこともできます。

適用対象

こちらもご覧ください