Dispatcher Clase

Definición

Proporciona los servicios para administrar la cola de elementos de trabajo de un subproceso.

public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
Herencia
Dispatcher

Ejemplos

En el ejemplo siguiente se muestra cómo colocar una operación en .Dispatcher Para obtener el código fuente completo de este ejemplo, vea Aplicación de subproceso único con Long-Running ejemplo de cálculo.

En primer lugar, se crea un delegado que no acepta ningún argumento.

public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()

A continuación, BeginInvoke(DispatcherPriority, Delegate) se llama a . Esta llamada a BeginInvoke(DispatcherPriority, Delegate) toma dos parámetros: la prioridad, que se establece DispatcherPriority.Normalen y la devolución de llamada, que se pasa a través de una instancia del delegado NextPrimeDelegate.

startStopButton.Dispatcher.BeginInvoke(
    DispatcherPriority.Normal,
    new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))

Comentarios

Dispatcher mantiene una cola prioritaria de elementos de trabajo para un subproceso específico.

Cuando se crea un Dispatcher objeto en un subproceso, se convierte en el único Dispatcher que se puede asociar al subproceso, incluso si Dispatcher se apaga .

Si intenta obtener para CurrentDispatcher el subproceso actual y Dispatcher no está asociado al subproceso, se creará .Dispatcher También se crea un Dispatcher objeto cuando se crea un DispatcherObjectobjeto . Si crea un Dispatcher en un subproceso en segundo plano, asegúrese de apagar el distribuidor antes de salir del subproceso.

Si se apaga , Dispatcher no se puede reiniciar.

En WPF, DispatcherObject solo se puede acceder a un objeto mediante el Dispatcher que está asociado. Por ejemplo, un subproceso en segundo plano no puede actualizar el contenido de un Button objeto asociado a en Dispatcher el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano tenga acceso a la Content propiedad de Button, el subproceso en segundo plano debe delegar el trabajo en el Dispatcher asociado al subproceso de la interfaz de usuario. Esto se logra mediante Invoke o BeginInvoke. Invoke es sincrónico y BeginInvoke es asincrónico. La operación se agrega a la cola de en Dispatcher el especificado DispatcherPriority.

Si BeginInvoke se llama a en un Dispatcher objeto que se ha apagado, la propiedad status del devuelto DispatcherOperation se establece Aborteden .

Todos los métodos de Dispatcher, con la excepción de DisableProcessing, son subprocesos libres.

Los objetos que derivan de DispatcherObject tienen afinidad de subproceso.

Los objetos que derivan de Freezable son subprocesos libres cuando se inmovilizan. Para obtener más información, consulte Información general sobre objetos Freezable.

Propiedades

CurrentDispatcher

Obtiene Dispatcher del subproceso que se ejecuta actualmente y crea un nuevo objeto Dispatcher si aún no hay ninguno asociado al subproceso.

HasShutdownFinished

Determina si Dispatcher ha terminado de cerrarse.

HasShutdownStarted

Determina si Dispatcher se está cerrando.

Hooks

Obtiene la colección de enlaces que proporcionan la información de evento adicional sobre Dispatcher.

Thread

Obtiene el subproceso al que está asociado este objeto Dispatcher.

Métodos

BeginInvoke(Delegate, DispatcherPriority, Object[])

Ejecuta de forma asincrónica el delegado especificado, con la prioridad indicada y los argumentos especificados, en el subproceso en el que se creó el objeto Dispatcher.

BeginInvoke(Delegate, Object[])

Ejecuta de forma asincrónica el delegado especificado con los argumentos especificados en el subproceso en el que se creó el objeto Dispatcher.

BeginInvoke(DispatcherPriority, Delegate)

Ejecuta asincrónicamente el delegado especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

BeginInvoke(DispatcherPriority, Delegate, Object)

Ejecuta asincrónicamente el delegado especificado en la prioridad indicada y con el argumento especificado en el subproceso al que está asociado el objeto Dispatcher.

BeginInvoke(DispatcherPriority, Delegate, Object, Object[])

Ejecuta asincrónicamente el delegado especificado en la prioridad indicada y con la matriz de argumentos indicada en el subproceso al que está asociado el objeto Dispatcher.

BeginInvokeShutdown(DispatcherPriority)

Inicia asincrónicamente el cierre de Dispatcher.

CheckAccess()

Determina si el subproceso de la llamada es el subproceso asociado a este objeto Dispatcher.

DisableProcessing()

Deshabilita el procesamiento de la cola de Dispatcher.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
ExitAllFrames()

Solicita que todos salgan los fotogramas, incluidos los fotogramas anidados.

FromThread(Thread)

Obtiene el objeto Dispatcher del subproceso especificado.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
Invoke(Action)

Ejecuta sincrónicamente el Action especificado en el subproceso al que está asociado el objeto Dispatcher.

Invoke(Action, DispatcherPriority)

Ejecuta sincrónicamente el Action especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

Invoke(Action, DispatcherPriority, CancellationToken)

Ejecuta sincrónicamente el Action especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Ejecuta sincrónicamente el Action especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

Invoke(Delegate, DispatcherPriority, Object[])

Ejecuta el delegado especificado en la prioridad indicada con los argumentos especificados sincrónicamente en el subproceso al que está asociado el objeto Dispatcher.

Invoke(Delegate, Object[])

Ejecuta de forma sincrónica el delegado especificado con los argumentos especificados en el subproceso al que está asociado el objeto Dispatcher.

Invoke(Delegate, TimeSpan, DispatcherPriority, Object[])

Ejecuta de forma sincrónica el delegado especificado dentro del intervalo de tiempo designado y con la prioridad y los argumentos especificados en el subproceso al que está asociado el objeto Dispatcher.

Invoke(Delegate, TimeSpan, Object[])

Ejecuta de forma sincrónica el delegado especificado dentro del intervalo de tiempo designado y con la prioridad y los argumentos especificados en el subproceso al que está asociado el objeto Dispatcher.

Invoke(DispatcherPriority, Delegate)

Ejecuta el delegado especificado de forma sincrónica en la prioridad especificada en el subproceso al que Dispatcher está asociado .

Invoke(DispatcherPriority, Delegate, Object)

Ejecuta el delegado especificado en la prioridad indicada con el argumento especificado sincrónicamente en el subproceso al que está asociado el objeto Dispatcher.

Invoke(DispatcherPriority, Delegate, Object, Object[])

Ejecuta el delegado especificado en la prioridad indicada con los argumentos especificados sincrónicamente en el subproceso al que está asociado el objeto Dispatcher.

Invoke(DispatcherPriority, TimeSpan, Delegate)

Ejecuta sincrónicamente el delegado especificado en la prioridad indicada y con el valor de tiempo de espera especificado en el subproceso que creó Dispatcher.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

Ejecuta el delegado especificado en la prioridad indicada con el argumento especificado sincrónicamente en el subproceso al que está asociado el objeto Dispatcher.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object, Object[])

Ejecuta el delegado especificado en la prioridad indicada con los argumentos especificados sincrónicamente en el subproceso al que está asociado el objeto Dispatcher.

Invoke<TResult>(Func<TResult>)

Ejecuta sincrónicamente el Func<TResult> especificado en el subproceso al que está asociado el objeto Dispatcher.

Invoke<TResult>(Func<TResult>, DispatcherPriority)

Ejecuta sincrónicamente el Func<TResult> especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)

Ejecuta sincrónicamente el Func<TResult> especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken, TimeSpan)

Ejecuta sincrónicamente el Func<TResult> especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

InvokeAsync(Action)

Ejecuta asincrónicamente el Action especificado en el subproceso al que está asociado el objeto Dispatcher.

InvokeAsync(Action, DispatcherPriority)

Ejecuta asincrónicamente el Action especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Ejecuta asincrónicamente el Action especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

InvokeAsync<TResult>(Func<TResult>)

Ejecuta asincrónicamente el Func<TResult> especificado en el subproceso al que está asociado el objeto Dispatcher.

InvokeAsync<TResult>(Func<TResult>, DispatcherPriority)

Ejecuta asincrónicamente el Func<TResult> especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

InvokeAsync<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)

Ejecuta asincrónicamente el Func<TResult> especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.

InvokeShutdown()

Inicia sincrónicamente el proceso de cierre de Dispatcher.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
PushFrame(DispatcherFrame)

Escribe un bucle de ejecución.

Run()

Inserta el fotograma de ejecución principal en la cola de eventos de Dispatcher.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
ValidatePriority(DispatcherPriority, String)

Determina si el objeto DispatcherPriority especificado tiene una prioridad válida.

VerifyAccess()

Determina si el subproceso de la llamada tiene acceso a Dispatcher.

Yield()

Crea un objeto que admite await que devuelve el control de forma asincrónica al distribuidor actual y proporciona una oportunidad para que el distribuidor procese otros eventos.

Yield(DispatcherPriority)

Crea un objeto que admite await que devuelve el control de forma asincrónica al distribuidor actual y proporciona una oportunidad para que el distribuidor procese otros eventos. El trabajo que se produce cuando el control vuelve al código que espera el resultado de este método se programa con la prioridad especificada.

Eventos

ShutdownFinished

Se produce cuando Dispatcher termina de cerrarse.

ShutdownStarted

Se produce cuando Dispatcher empieza a cerrarse.

UnhandledException

Se produce cuando se produce y no se detecta una excepción de subproceso durante la ejecución de un delegado mediante los métodos Invoke o BeginInvoke.

UnhandledExceptionFilter

Se produce cuando se produce y no se detecta una excepción de subproceso durante la ejecución de un delegado mediante los métodos Invoke o BeginInvoke mientras se está en la fase de filtrado.

Métodos de extensión

BeginInvoke(Dispatcher, Action)

Ejecuta de forma asincrónica el delegado especificado con prioridad normal en el subproceso en el que se creó el objeto Dispatcher especificado.

BeginInvoke(Dispatcher, Action, DispatcherPriority)

Ejecuta de forma asincrónica el delegado especificado con la prioridad indicada en el subproceso en el que se creó el objeto Dispatcher especificado.

Invoke(Dispatcher, Action)

Ejecuta de forma sincrónica el delegado especificado con prioridad normal en el subproceso en el que se creó el objeto Dispatcher especificado.

Invoke(Dispatcher, Action, TimeSpan)

Ejecuta de forma sincrónica el delegado especificado en el subproceso en el que se creó el objeto Dispatcher indicado y detiene la ejecución una vez transcurrido el tiempo de espera definido.

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

Ejecuta el delegado especificado de forma sincrónica y con la prioridad indicada en el subproceso en el que se creó el objeto Dispatcher especificado y detiene la ejecución una vez transcurrido el tiempo de espera definido.

Invoke(Dispatcher, Action, DispatcherPriority)

Ejecuta de forma sincrónica el delegado especificado con la prioridad indicada en el subproceso en el que se creó el objeto Dispatcher especificado.

Se aplica a

Consulte también