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 运行时都会读取 属性。
当 WinUI Desktop 应用) 启动时调用 Application.Start 方法 (时,XAML 运行时将当前线程设置为 DispatcherShutdownMode
OnLastWindowClose
。 这会导致 DispatcherQueue 的事件循环在线程上的所有 XAML 窗口关闭时退出。
在 WinUI 桌面应用中,你可能希望代码在线程上的所有 XAML 窗口关闭后也能继续运行。 若要实现此目的,可以将此属性设置为 OnExplicitShutdown
。 然后,在关闭所有 XAML 窗口后,线程将继续运行。 在此状态下,你仍然可以在 DispatcherQueue 上计划工作,在其他线程上运行工作,并显示新的 XAML 窗口。
如果应用程序不像基于 XAML 岛的应用程序) 一样调用 Application.Start (,则此属性将默认为 OnExplicitShutdown
。 在此状态下,XAML 运行时不会在 XAML 窗口关闭时采取任何操作来退出事件循环。
使用 OnExplicitShutdown
时,需要自行退出事件循环,以便该线程上的事件循环退出。 若要正确退出事件循环,请调用 DispatcherQueue.EnqueueEventLoopExit。 或者,可以调用 Application.Exit,这也会导致 XAML 运行时调用 PostQuitMessage。