Application.DispatcherShutdownMode Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает значение, указывающее, завершается ли цикл событий DispatcherQueue при закрытии всех окон XAML в потоке.
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
Значение свойства
Значение перечисления, указывающее, завершается ли цикл событий DispatcherQueue при закрытии всех окон XAML в потоке. Сведения о поведении по умолчанию см. в разделе Примечания.
Комментарии
Это свойство для каждого потока. При его установке свойство изменится только для текущего потока. Это свойство может иметь разные значения в разных потоках приложения.
Это свойство можно задать в любое время. Среда выполнения XAML считывает свойство каждый раз, когда закрывается последнее окно в любом потоке.
При вызове метода Application.Start (как при запуске для классических приложений WinUI) среда выполнения XAML задает DispatcherShutdownMode
для текущего потока значение OnLastWindowClose
. Это приводит к завершению цикла событий DispatcherQueue при закрытии всех окон XAML в потоке.
В классическом приложении WinUI код может продолжать выполняться даже после закрытия всех окон XAML в потоке. Для этого можно присвоить этому свойству значение OnExplicitShutdown
. После закрытия всех окон XAML поток продолжит работать. В этом состоянии вы по-прежнему можете планировать работу в DispatcherQueue, выполнять работу в других потоках и отображать новые окна XAML.
Если приложение не вызывает Application.Start (как это обычно бывает для приложений на основе XAML Islands), это свойство по умолчанию будет равно OnExplicitShutdown
. В этом состоянии среда выполнения XAML не выполняет никаких действий по выходу из цикла событий при закрытии окон XAML.
При использовании OnExplicitShutdown
необходимо самостоятельно выйти из цикла событий, когда вы будете готовы к выходу из цикла событий в этом потоке. Чтобы правильно выйти из цикла событий, вызовите DispatcherQueue.EnqueueEventLoopExit. Кроме того, можно вызвать Application.Exit, что также приводит к тому, что среда выполнения XAML вызывает PostQuitMessage.