CoreDispatcher.RunIdleAsync(IdleDispatchedHandler) Método
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í.
Programa una devolución de llamada en el subproceso de interfaz de usuario desde un subproceso de trabajo con prioridad inactiva y devuelve los resultados de forma asincrónica.
public:
virtual IAsyncAction ^ RunIdleAsync(IdleDispatchedHandler ^ agileCallback) = RunIdleAsync;
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction RunIdleAsync(IdleDispatchedHandler const& agileCallback);
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction RunIdleAsync(IdleDispatchedHandler agileCallback);
function runIdleAsync(agileCallback)
Public Function RunIdleAsync (agileCallback As IdleDispatchedHandler) As IAsyncAction
Parámetros
- agileCallback
- IdleDispatchedHandler
Devolución de llamada en la que el distribuidor de prioridad inactiva devuelve cuando se envía el evento.
Devoluciones
Objeto que contiene los resultados de la acción asincrónica.
- Atributos
Comentarios
El método RunIdleAsync es muy similar a CoreDispatcher.RunAsync, salvo que siempre programa el elemento de trabajo en CoreDispatcherPriority.Low priority. Cuando se programa un elemento de trabajo llamando a RunIdleAsync desde un subproceso de trabajo, el elemento de trabajo solo se procesa cuando no hay ningún mensaje de evento pendiente en la cola. Esto permite que la aplicación realice tareas como la revisión ortográfica u otro procesamiento discreto mientras el sistema está inactivo. Si el delegado IdleDispatchedHandler devuelto por la devolución de llamada tiene la propiedad IsDispatcherIdle establecida en false, el elemento de trabajo sale inmediatamente del procesamiento en segundo plano hasta que la cola de eventos vuelva a estar vacía.
Sin embargo, mientras la aplicación procesa una tarea en segundo plano, puede continuar procesando siempre y cuando no haya mensajes de eventos pendientes en la cola de mensajes de eventos CoreDispatcher . Si la aplicación recibe un mensaje de evento en la cola, debe interrumpir el procesamiento en segundo plano. Para determinar cuándo la aplicación debe salir del procesamiento en segundo plano, acceda a la propiedad IsDispatcherIdle en el objeto IdleDispatchedHandlerArgs devuelto por la devolución de llamada IdleDispatchedHandler que proporcionó a RunIdleAsync. Si hay un mensaje, salga del procesamiento en segundo plano y establezca la prioridad en CoreDispatcherPriority.Normal. De lo contrario, si la devolución de llamada continúa ejecutándose sin comprobar el estado del distribuidor, podría provocar un colapso de entrada.