Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés
Esta documentación está archivada y no tiene mantenimiento.

Dispatcher (Clase)

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

System.Object
  System.Windows.Threading.Dispatcher

Espacio de nombres:  System.Windows.Threading
Ensamblado:  WindowsBase (en WindowsBase.dll)

public sealed class Dispatcher

El tipo Dispatcher expone los siguientes miembros.

  NombreDescripción
Propiedad públicaMiembro estáticoCurrentDispatcherObtiene Dispatcher del subproceso que se ejecuta actualmente y crea un nuevo objeto Dispatcher si aún no hay ninguno asociado al subproceso.
Propiedad públicaHasShutdownFinishedDetermina si Dispatcher ha terminado de cerrarse.
Propiedad públicaHasShutdownStartedDetermina si Dispatcher se está cerrando.
Propiedad públicaHooksObtiene la colección de enlaces que proporcionan la información de evento adicional sobre Dispatcher.
Propiedad públicaThreadObtiene el subproceso al que está asociado este objeto Dispatcher.
Arriba

  NombreDescripción
Método públicoBeginInvoke(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.
Método públicoBeginInvoke(DispatcherPriority, Delegate)Ejecuta asincrónicamente el delegado especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.
Método públicoBeginInvoke(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.
Método públicoBeginInvoke(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.
Método públicoBeginInvoke(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.
Método públicoBeginInvokeShutdownInicia asincrónicamente el cierre de Dispatcher.
Método públicoCheckAccessDetermina si el subproceso de la llamada es el subproceso asociado a este objeto Dispatcher.
Método públicoDisableProcessingDeshabilita el procesamiento de la cola de Dispatcher.
Método públicoEquals(Object)Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método públicoMiembro estáticoExitAllFramesSolicita que todos salgan los fotogramas, incluidos los fotogramas anidados.
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Se hereda de Object).
Método públicoMiembro estáticoFromThreadObtiene el objeto Dispatcher del subproceso especificado.
Método públicoGetHashCodeActúa como función hash para un tipo concreto. (Se hereda de Object).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoInvoke(Delegate, Object[])Ejecuta de forma sincrónica el delegado especificado con los argumentos especificados en el subproceso al que está asociado el objeto Dispatcher.
Método públicoInvoke(DispatcherPriority, Delegate)Ejecuta sincrónicamente el delegado especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.
Método públicoInvoke(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.
Método públicoInvoke(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.
Método públicoInvoke(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.
Método públicoInvoke(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.
Método públicoInvoke(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.
Método públicoInvoke(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.
Método públicoInvoke(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.
Método públicoInvoke(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.
Método públicoInvokeShutdownInicia sincrónicamente el proceso de cierre de Dispatcher.
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método públicoMiembro estáticoPushFrameEscribe un bucle de ejecución.
Método públicoMiembro estáticoRunInserta el fotograma de ejecución principal en la cola de eventos de Dispatcher.
Método públicoToString Devuelve una cadena que representa al objeto actual. (Se hereda de Object).
Método públicoMiembro estáticoValidatePriorityDetermina si el objeto DispatcherPriority especificado tiene una prioridad válida.
Método públicoVerifyAccessDetermina si el subproceso de la llamada tiene acceso a Dispatcher.
Arriba

  NombreDescripción
Evento públicoShutdownFinishedSe produce cuando Dispatcher termina de cerrarse.
Evento públicoShutdownStartedSe produce cuando Dispatcher empieza a cerrarse.
Evento públicoUnhandledExceptionSe 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.
Evento públicoUnhandledExceptionFilterSe 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.
Arriba

  NombreDescripción
Método de extensión públicoBeginInvoke(Action)Sobrecargado. Ejecuta de forma asincrónica el delegado especificado con prioridad normal en el subproceso en el que se creó el objeto Dispatcher especificado. (Definido por DispatcherExtensions).
Método de extensión públicoBeginInvoke(Action, DispatcherPriority)Sobrecargado. Ejecuta de forma asincrónica el delegado especificado con la prioridad indicada en el subproceso en el que se creó el objeto Dispatcher especificado. (Definido por DispatcherExtensions).
Método de extensión públicoInvoke(Action)Sobrecargado. Ejecuta de forma sincrónica el delegado especificado con prioridad normal en el subproceso en el que se creó el objeto Dispatcher especificado. (Definido por DispatcherExtensions).
Método de extensión públicoInvoke(Action, DispatcherPriority)Sobrecargado. Ejecuta de forma sincrónica el delegado especificado con la prioridad indicada en el subproceso en el que se creó el objeto Dispatcher especificado. (Definido por DispatcherExtensions).
Método de extensión públicoInvoke(Action, TimeSpan)Sobrecargado. 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. (Definido por DispatcherExtensions).
Método de extensión públicoInvoke(Action, TimeSpan, DispatcherPriority)Sobrecargado. 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. (Definido por DispatcherExtensions).
Arriba

Dispatcher mantiene una cola clasificada por orden de prioridad de los elementos de trabajo de un subproceso concreto.

Cuando Dispatcher se crea en un subproceso, se convierte en el único objeto Dispatcher que se puede asociar al subproceso, aunque se cierre Dispatcher.

Si intenta obtener la propiedad CurrentDispatcher del subproceso actual y Dispatcher no está asociado al subproceso, se creará un objeto Dispatcher.

Si se cierra Dispatcher, no se puede reiniciar.

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

Si se llama a BeginInvoke en un objeto Dispatcher que se ha cerrado, el estado de la propiedad del objeto DispatcherOperation devuelto se establece en Aborted.

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

Los objetos que se derivan de DispatcherObject tienen afinidad con el subproceso.

Los objetos que se derivan de Freezable quedan libres del subproceso cuando se inmovilizan. Para obtener más información, vea Información general sobre objetos Freezable.

En el ejemplo siguiente, se muestra cómo colocar una operación en un objeto Dispatcher. Para obtener el código fuente completo de este ejemplo, vea Single-Threaded Application with Long-Running Calculation Sample.

Primero, se crea un delegado que no acepta argumentos.


public delegate void NextPrimeDelegate();


Después, se llama a BeginInvoke(DispatcherPriority, Delegate). Esta llamada a BeginInvoke(DispatcherPriority, Delegate) toma dos parámetros: la prioridad, que se establece en DispatcherPriority.Normal, 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));


.NET Framework

Compatible con: 4, 3.5, 3.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Mostrar: