Dispatcher Classe

Definição

Fornece serviços para gerir a fila de itens de trabalho para uma thread.

public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
Herança
Dispatcher

Exemplos

O exemplo seguinte mostra como colocar uma operação sobre um Dispatcher. Para o código-fonte completo deste exemplo, veja Single-Threaded Aplicação com Long-Running Exemplo de Cálculo.

Primeiro, é criado um delegado que não aceita argumentos.

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

A seguir, BeginInvoke(DispatcherPriority, Delegate) é chamado. Esta chamada para BeginInvoke(DispatcherPriority, Delegate) assume dois parâmetros: a prioridade, que é definida para DispatcherPriority.Normal, e a callback, que é passada através de uma instância do delegado NextPrimeDelegate.

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

Observações

Mantém Dispatcher uma fila prioritária de itens de trabalho para um tópico específico.

Quando um Dispatcher é criado num thread, torna-se o único Dispatcher que pode ser associado ao thread, mesmo que este Dispatcher seja desligado.

Se tentar obter o CurrentDispatcher para a thread atual e a Dispatcher não estiver associado à thread, será criado a Dispatcher . A Dispatcher também é criado quando se cria um DispatcherObject. Se criares um Dispatcher thread em segundo plano, certifica-te de desligar o dispatcher antes de sair do thread.

Se a Dispatcher for desligado, não pode ser reiniciado.

Em WPF, um DispatcherObject só pode ser acedido pelo Dispatcher ao qual está associado. Por exemplo, um thread em segundo plano não pode atualizar o conteúdo de um Button que está associado ao Dispatcher no thread da interface. Para que o thread em segundo plano aceda à Content propriedade do Button, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread associado ao UI. Isto é conseguido usando ou InvokeBeginInvoke. Invoke é síncrona e BeginInvoke é assíncrona. A operação é adicionada à fila do Dispatcher no especificado DispatcherPriority.

Se BeginInvoke for chamado em um Dispatcher que desligou, a propriedade de estado do retornado DispatcherOperation é definida para Aborted.

Todos os métodos em Dispatcher, com exceção de DisableProcessing, são de thread livre.

Objetos que derivam de DispatcherObject têm afinidade com fios.

Os objetos que derivam de Freezable são livremente enfiados quando são congelados. Para obter mais informações, consulte a Visão Geral de Objetos Congeláveis .

Propriedades

Name Description
CurrentDispatcher

Obtém o Dispatcher para a thread que está a ser executada e cria uma nova Dispatcher , se ainda não estiver associada à thread.

HasShutdownFinished

Determina se o Dispatcher desligou completamente.

HasShutdownStarted

Determina se está Dispatcher a desligar.

Hooks

Obtém a coleção de ganchos que fornecem informações adicionais sobre o Dispatcherevento.

Thread

Percebe o tópico a que isto Dispatcher está associado.

Métodos

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

Executa o delegado especificado de forma assíncrona com os argumentos especificados, na prioridade especificada, no thread onde foi criado Dispatcher .

BeginInvoke(Delegate, Object[])

Executa o delegado especificado de forma assíncrona com os argumentos especificados no thread onde foi criado Dispatcher .

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

Executa o delegado especificado de forma assíncrona à prioridade especificada e com o array especificado de argumentos no thread ao qual está Dispatcher associado.

BeginInvoke(DispatcherPriority, Delegate, Object)

Executa o delegado especificado de forma assíncrona à prioridade especificada e com o argumento especificado no thread Dispatcher ao qual está associado.

BeginInvoke(DispatcherPriority, Delegate)

Executa o delegado especificado de forma assíncrona na prioridade especificada no thread ao qual está Dispatcher associado.

BeginInvokeShutdown(DispatcherPriority)

Inicia o desligamento do Dispatcher assíncrono.

CheckAccess()

Determina se o thread que chama é o thread associado a este Dispatcher.

DisableProcessing()

Desativa o processamento da Dispatcher fila.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
ExitAllFrames()

Pede que todos os frames saiam, incluindo os frames aninhados.

FromThread(Thread)

Obtém o Dispatcher para o tópico especificado.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Executa o especificado Action de forma síncrona na prioridade especificada no thread ao qual está Dispatcher associado.

Invoke(Action, DispatcherPriority, CancellationToken)

Executa o especificado Action de forma síncrona na prioridade especificada no thread ao qual está Dispatcher associado.

Invoke(Action, DispatcherPriority)

Executa o especificado Action de forma síncrona na prioridade especificada no thread ao qual está Dispatcher associado.

Invoke(Action)

Executa o especificado Action de forma síncrona no thread ao qual está Dispatcher associado.

Invoke(Delegate, DispatcherPriority, Object[])

Executa o delegado especificado na prioridade especificada com os argumentos especificados sincronizados na thread à qual está Dispatcher associado.

Invoke(Delegate, Object[])

Executa o delegado especificado com os argumentos especificados de forma síncrona no thread ao qual está Dispatcher associado.

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

Executa o delegado especificado dentro do intervalo de tempo designado na prioridade especificada, com os argumentos especificados sincronizados na thread Dispatcher a que está associado.

Invoke(Delegate, TimeSpan, Object[])

Executa o delegado especificado dentro do intervalo de tempo designado na prioridade especificada, com os argumentos especificados sincronizados na thread Dispatcher a que está associado.

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

Executa o delegado especificado na prioridade especificada com os argumentos especificados sincronizados na thread à qual está Dispatcher associado.

Invoke(DispatcherPriority, Delegate, Object)

Executa o delegado especificado na prioridade especificada com o argumento especificado sincronizado na thread a que está Dispatcher associado.

Invoke(DispatcherPriority, Delegate)

Executa o delegado especificado de forma síncrona na prioridade especificada no thread ao qual o Dispatcher está associado.

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

Executa o delegado especificado na prioridade especificada com os argumentos especificados sincronizados na thread à qual está Dispatcher associado.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

Executa o delegado especificado na prioridade especificada com o argumento especificado sincronizado na thread a que está Dispatcher associado.

Invoke(DispatcherPriority, TimeSpan, Delegate)

Executa o delegado especificado de forma síncrona na prioridade especificada e com o valor de time-out especificado na thread que Dispatcher foi criada.

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

Executa o especificado Func<TResult> de forma síncrona na prioridade especificada no thread ao qual está Dispatcher associado.

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

Executa o especificado Func<TResult> de forma síncrona na prioridade especificada no thread ao qual está Dispatcher associado.

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

Executa o especificado Func<TResult> de forma síncrona na prioridade especificada no thread ao qual está Dispatcher associado.

Invoke<TResult>(Func<TResult>)

Executa o especificado Func<TResult> de forma síncrona no thread ao qual está Dispatcher associado.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Executa o especificado Action de forma assíncrona à prioridade especificada no thread ao qual está Dispatcher associado.

InvokeAsync(Action, DispatcherPriority)

Executa o especificado Action de forma assíncrona à prioridade especificada no thread ao qual está Dispatcher associado.

InvokeAsync(Action)

Executa o especificado Action de forma assíncrona no thread ao qual está Dispatcher associado.

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

Executa o especificado Func<TResult> de forma assíncrona à prioridade especificada no thread ao qual está Dispatcher associado.

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

Executa o especificado Func<TResult> de forma assíncrona à prioridade especificada no thread ao qual está Dispatcher associado.

InvokeAsync<TResult>(Func<TResult>)

Executa o especificado Func<TResult> de forma assíncrona no thread ao qual está Dispatcher associado.

InvokeShutdown()

Inicia o processo de desligamento sincrónico Dispatcher .

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
PushFrame(DispatcherFrame)

Entra num ciclo de execução.

Run()

Empurra o frame principal de execução na fila de eventos do Dispatcher.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
ValidatePriority(DispatcherPriority, String)

Determina se o especificado DispatcherPriority é uma prioridade válida.

VerifyAccess()

Determina se o thread que chama tem acesso a este Dispatcher.

Yield()

Cria um objeto aguardável que devolve o controlo de forma assíncrona ao despachante atual e oferece uma oportunidade ao despachante processar outros eventos.

Yield(DispatcherPriority)

Cria um objeto aguardável que devolve o controlo de forma assíncrona ao despachante atual e oferece uma oportunidade ao despachante processar outros eventos. O trabalho que ocorre quando o controlo regressa ao código que aguarda o resultado deste método é agendado com a prioridade especificada.

evento

Name Description
ShutdownFinished

Acontece quando os Dispatcher acabamentos desligam.

ShutdownStarted

Acontece quando começa Dispatcher a desligar-se.

UnhandledException

Ocorre quando uma exceção de thread é lançada e desapanhada durante a execução de um delegado através de Invoke ou BeginInvoke.

UnhandledExceptionFilter

Ocorre quando uma exceção de thread é lançada e desapanhada durante a execução de um delegado através de Invoke , ou BeginInvoke quando está na fase de filtro.

Métodos da Extensão

Name Description
BeginInvoke(Dispatcher, Action, DispatcherPriority)

Executa o delegado especificado de forma assíncrona com a prioridade especificada no thread onde o especificado Dispatcher foi criado.

BeginInvoke(Dispatcher, Action)

Executa o delegado especificado de forma assíncrona com prioridade normal no thread onde o especificado Dispatcher foi criado.

Invoke(Dispatcher, Action, DispatcherPriority)

Executa o delegado especificado de forma síncrona com a prioridade especificada no thread onde o especificado Dispatcher foi criado.

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

Executa o delegado especificado de forma síncrona com a prioridade especificada no thread onde o especificado Dispatcher foi criado, e para a execução após o período de tempo especificado.

Invoke(Dispatcher, Action, TimeSpan)

Executa o delegado especificado de forma síncrona na thread onde a thread especificada Dispatcher foi criada, e para a execução após o período de tempo especificado.

Invoke(Dispatcher, Action)

Executa o delegado especificado de forma síncrona com a prioridade normal no thread onde o especificado Dispatcher foi criado.

Aplica-se a

Ver também