Dispatcher Clase

Definición

Proporciona los servicios para administrar la cola de elementos de trabajo de un subproceso.Provides services for managing the queue of work items for a thread.

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 Dispatcherun.The following example shows how to place an operation onto a Dispatcher. Para obtener el código fuente completo de este ejemplo, vea aplicación de un único subproceso con un ejemplo de cálculo de ejecución prolongada.For the full source code of this example, see Single-Threaded Application with Long-Running Calculation Sample.

En primer lugar, se crea un delegado que no acepta argumentos.First, a delegate is created that accepts no arguments.

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

A continuación BeginInvoke(DispatcherPriority, Delegate) , se llama a.Next, BeginInvoke(DispatcherPriority, Delegate) is called. 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 NextPrimeDelegatedel delegado.This call to BeginInvoke(DispatcherPriority, Delegate) takes two parameters: the priority, which is set to DispatcherPriority.Normal, and the callback, which is passed in through an instance of the delegate NextPrimeDelegate.

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

Comentarios

Dispatcher Mantiene una cola de elementos de trabajo con prioridad para un subproceso concreto.The Dispatcher maintains a prioritized queue of work items for a specific thread.

Cuando se Dispatcher crea un en un subproceso, se convierte en Dispatcher el único que se puede asociar al Dispatcher subproceso, aunque se cierre.When a Dispatcher is created on a thread, it becomes the only Dispatcher that can be associated with the thread, even if the Dispatcher is shut down.

Si intenta obtener el CurrentDispatcher objeto para el subproceso actual Dispatcher y no está asociado al subproceso, Dispatcher se creará.If you attempt to get the CurrentDispatcher for the current thread and a Dispatcher is not associated with the thread, a Dispatcher will be created. También Dispatcher se crea una al crear un. DispatcherObjectA Dispatcher is also created when you create a DispatcherObject. Si crea un Dispatcher en un subproceso en segundo plano, asegúrese de apagar el distribuidor antes de salir del subproceso.If you create a Dispatcher on a background thread, be sure to shut down the dispatcher before exiting the thread.

Si se Dispatcher apaga un, no se puede reiniciar.If a Dispatcher is shut down, it cannot be restarted.

En WPFWPF, solo DispatcherObject se puede tener acceso a un objeto Dispatcher con el que está asociado.In WPFWPF, a DispatcherObject can only be accessed by the Dispatcher it is associated with. Por ejemplo, un subproceso en segundo plano no puede actualizar Button el contenido de un objeto Dispatcher que está IUUI asociado a en el subproceso.For example, a background thread cannot update the contents of a Button that is associated with the Dispatcher on the IUUI thread. Para que el subproceso en segundo plano tenga Content acceso a la Buttonpropiedad de, el subproceso en segundo plano debe Dispatcher delegar el IUUI trabajo en el asociado al subproceso.In order for the background thread to access the Content property of the Button, the background thread must delegate the work to the Dispatcher associated with the IUUI thread. Esto se logra Invoke mediante o BeginInvoke.This is accomplished by using either Invoke or BeginInvoke. Invokees sincrónico y BeginInvoke es asincrónico.Invoke is synchronous and BeginInvoke is asynchronous. La operación se agrega a la cola de Dispatcher en el especificado. DispatcherPriorityThe operation is added to the queue of the Dispatcher at the specified DispatcherPriority.

Si BeginInvoke se llama a en Dispatcher un que se ha cerrado, la propiedad status del DispatcherOperation devuelto se Abortedestablece en.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

Todos los métodos de Dispatcher, con la excepción de DisableProcessing, son de subproceso libre.All of the methods on Dispatcher, with the exception of DisableProcessing, are free-threaded.

Los objetos que derivan de tienen afinidad de DispatcherObject subprocesos.Objects that derive from DispatcherObject have thread affinity.

Los objetos que se Freezable derivan de son de subprocesamiento libre cuando se inmovilizan.Objects that derive from Freezable are free-threaded when they are frozen. Para obtener más información, consulte Información general sobre objetos Freezable.For more information, see Freezable Objects Overview.

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.Gets the Dispatcher for the thread currently executing and creates a new Dispatcher if one is not already associated with the thread.

HasShutdownFinished

Determina si Dispatcher ha terminado de cerrarse.Determines whether the Dispatcher has finished shutting down.

HasShutdownStarted

Determina si Dispatcher se está cerrando.Determines whether the Dispatcher is shutting down.

Hooks

Obtiene la colección de enlaces que proporcionan la información de evento adicional sobre Dispatcher.Gets the collection of hooks that provide additional event information about the Dispatcher.

Thread

Obtiene el subproceso al que está asociado este objeto Dispatcher.Gets the thread this Dispatcher is associated with.

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.Executes the specified delegate asynchronously with the specified arguments, at the specified priority, on the thread that the Dispatcher was created on.

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.Executes the specified delegate asynchronously with the specified arguments on the thread that the Dispatcher was created on.

BeginInvoke(DispatcherPriority, Delegate)

Ejecuta asincrónicamente el delegado especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.Executes the specified delegate asynchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified delegate asynchronously at the specified priority and with the specified argument on the thread the Dispatcher is associated with.

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.Executes the specified delegate asynchronously at the specified priority and with the specified array of arguments on the thread the Dispatcher is associated with.

BeginInvokeShutdown(DispatcherPriority)

Inicia asincrónicamente el cierre de Dispatcher.Initiates shutdown of the Dispatcher asynchronously.

CheckAccess()

Determina si el subproceso de la llamada es el subproceso asociado a este objeto Dispatcher.Determines whether the calling thread is the thread associated with this Dispatcher.

DisableProcessing()

Deshabilita el procesamiento de la cola de Dispatcher.Disables processing of the Dispatcher queue.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
ExitAllFrames()

Solicita que todos salgan los fotogramas, incluidos los fotogramas anidados.Requests that all frames exit, including nested frames.

FromThread(Thread)

Obtiene el objeto Dispatcher del subproceso especificado.Gets the Dispatcher for the specified thread.

GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
Invoke(Action)

Ejecuta sincrónicamente el Action especificado en el subproceso al que está asociado el objeto Dispatcher.Executes the specified Action synchronously on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority)

Ejecuta sincrónicamente el Action especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority, CancellationToken)

Ejecuta sincrónicamente el Action especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate with the specified arguments synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate within the designated time span at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate within the designated time span at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(DispatcherPriority, Delegate)

Ejecuta sincrónicamente el delegado especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.Executes the specified delegate synchronously at the specified priority on the thread on which the Dispatcher is associated with.

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.Executes the specified delegate at the specified priority with the specified argument synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate synchronously at the specified priority and with the specified time-out value on the thread the Dispatcher was created.

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.Executes the specified delegate at the specified priority with the specified argument synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke<TResult>(Func<TResult>)

Ejecuta sincrónicamente el Func<TResult> especificado en el subproceso al que está asociado el objeto Dispatcher.Executes the specified Func<TResult> synchronously on the thread the Dispatcher is associated with.

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.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync(Action)

Ejecuta asincrónicamente el Action especificado en el subproceso al que está asociado el objeto Dispatcher.Executes the specified Action asynchronously on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority)

Ejecuta asincrónicamente el Action especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.Executes the specified Action asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Ejecuta asincrónicamente el Action especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher.Executes the specified Action asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync<TResult>(Func<TResult>)

Ejecuta asincrónicamente el Func<TResult> especificado en el subproceso al que está asociado el objeto Dispatcher.Executes the specified Func<TResult> asynchronously on the thread the Dispatcher is associated with.

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.Executes the specified Func<TResult> asynchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified Func<TResult> asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeShutdown()

Inicia sincrónicamente el proceso de cierre de Dispatcher.Initiates the shutdown process of the Dispatcher synchronously.

MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
PushFrame(DispatcherFrame)

Escribe un bucle de ejecución.Enters an execute loop.

Run()

Inserta el fotograma de ejecución principal en la cola de eventos de Dispatcher.Pushes the main execution frame on the event queue of the Dispatcher.

ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)
ValidatePriority(DispatcherPriority, String)

Determina si el objeto DispatcherPriority especificado tiene una prioridad válida.Determines whether the specified DispatcherPriority is a valid priority.

VerifyAccess()

Determina si el subproceso de la llamada tiene acceso a Dispatcher.Determines whether the calling thread has access to this 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.Creates an awaitable object that asynchronously yields control back to the current dispatcher and provides an opportunity for the dispatcher to process other events.

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.Creates an awaitable object that asynchronously yields control back to the current dispatcher and provides an opportunity for the dispatcher to process other events. 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.The work that occurs when control returns to the code awaiting the result of this method is scheduled with the specified priority.

Eventos

ShutdownFinished

Se produce cuando Dispatcher termina de cerrarse.Occurs when the Dispatcher finishes shutting down.

ShutdownStarted

Se produce cuando Dispatcher empieza a cerrarse.Occurs when the Dispatcher begins to shut down.

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.Occurs when a thread exception is thrown and uncaught during execution of a delegate by way of Invoke or 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.Occurs when a thread exception is thrown and uncaught during execution of a delegate by way of Invoke or BeginInvoke when in the filter stage.

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.Executes the specified delegate asynchronously with normal priority on the thread that the specified Dispatcher was created on.

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.Executes the specified delegate asynchronously with the specified priority on the thread that the specified Dispatcher was created on.

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.Executes the specified delegate synchronously with normal priority on the thread that the specified Dispatcher was created on.

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.Executes the specified delegate synchronously on the thread that the specified Dispatcher was created on, and stops execution after the specified time-out period.

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.Executes the specified delegate synchronously with the specified priority on the thread that the specified Dispatcher was created on, and stops execution after the specified time-out period.

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.Executes the specified delegate synchronously with the specified priority on the thread that the specified Dispatcher was created on.

Se aplica a

Consulte también: