Application.DispatcherShutdownMode Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un valor que especifica si el bucle de eventos DispatcherQueue sale cuando se cierran todas las ventanas XAML de un subproceso.
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
Valor de propiedad
Valor de enumeración que especifica si el bucle de eventos DispatcherQueue sale cuando se cierran todas las ventanas XAML de un subproceso. Consulte Comentarios sobre el comportamiento predeterminado.
Comentarios
Se trata de una propiedad por subproceso. Al establecerla, la propiedad solo cambiará para el subproceso actual. Es posible tener valores diferentes para esta propiedad en diferentes subprocesos de la aplicación.
Puede establecer esta propiedad en cualquier momento. El tiempo de ejecución xaml lee la propiedad cada vez que se cierra la última ventana de cualquier subproceso.
Cuando se llama al método Application.Start (como está en el inicio para las aplicaciones de escritorio winUI), el tiempo de ejecución XAML establece DispatcherShutdownMode
OnLastWindowClose
en para el subproceso actual. Esto hace que el bucle de eventos de DispatcherQueue salga cuando se cierren todas las ventanas XAML del subproceso.
En una aplicación de escritorio de WinUI, es posible que quieras que el código siga ejecutándose incluso después de que se hayan cerrado todas las ventanas XAML del subproceso. Para ello, puede establecer esta propiedad en OnExplicitShutdown
. Después de que todas las ventanas XAML se hayan cerrado, el subproceso seguirá ejecutándose. En este estado, todavía puedes programar el trabajo en DispatcherQueue, ejecutar trabajo en otros subprocesos y mostrar nuevas ventanas XAML.
Si la aplicación no llama a Application.Start (como suele ser el caso de las aplicaciones basadas en islas XAML), esta propiedad tendrá como valor predeterminado OnExplicitShutdown
. En este estado, el tiempo de ejecución xaml no realiza ninguna acción para salir del bucle de eventos cuando se cierran las ventanas XAML.
Cuando use OnExplicitShutdown
, deberá salir del bucle de eventos cuando esté listo para que el bucle de eventos de ese subproceso salga. Para salir correctamente del bucle de eventos, llame a DispatcherQueue.EnqueueEventLoopExit. Como alternativa, puedes llamar a Application.Exit, lo que también hace que el tiempo de ejecución xaml llame a PostQuitMessage.