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 运行时都会读取 属性。

当 WinUI Desktop 应用) 启动时调用 Application.Start 方法 (时,XAML 运行时将当前线程设置为 DispatcherShutdownModeOnLastWindowClose 。 这会导致 DispatcherQueue 的事件循环在线程上的所有 XAML 窗口关闭时退出。

在 WinUI 桌面应用中,你可能希望代码在线程上的所有 XAML 窗口关闭后也能继续运行。 若要实现此目的,可以将此属性设置为 OnExplicitShutdown。 然后,在关闭所有 XAML 窗口后,线程将继续运行。 在此状态下,你仍然可以在 DispatcherQueue 上计划工作,在其他线程上运行工作,并显示新的 XAML 窗口。

如果应用程序不像基于 XAML 岛的应用程序) 一样调用 Application.Start (,则此属性将默认为 OnExplicitShutdown。 在此状态下,XAML 运行时不会在 XAML 窗口关闭时采取任何操作来退出事件循环。

使用 OnExplicitShutdown时,需要自行退出事件循环,以便该线程上的事件循环退出。 若要正确退出事件循环,请调用 DispatcherQueue.EnqueueEventLoopExit。 或者,可以调用 Application.Exit,这也会导致 XAML 运行时调用 PostQuitMessage

适用于

另请参阅