Compartilhar via


Dispatcher Classe

Definição

Fornece serviços para gerenciar a fila de itens de trabalho para um thread.

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

Exemplos

O exemplo a seguir mostra como colocar uma operação em um Dispatcher. Para obter o código-fonte completo deste exemplo, consulte Single-Threaded Application with Long-Running Calculation Sample.

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

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

Em seguida, BeginInvoke(DispatcherPriority, Delegate) é chamado. Essa chamada usa BeginInvoke(DispatcherPriority, Delegate) dois parâmetros: a prioridade, que é definida como DispatcherPriority.Normal, e o retorno de chamada, que é passado por meio de uma instância do delegado NextPrimeDelegate.

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

Comentários

A Dispatcher mantém uma fila priorizada de itens de trabalho para um thread específico.

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

Se você tentar obter o CurrentDispatcher thread atual e um Dispatcher não estiver associado ao thread, um Dispatcher será criado. Um Dispatcher também é criado quando você cria um DispatcherObject. Se você criar um Dispatcher thread em segundo plano, desligue o dispatcher antes de sair do thread.

Se um Dispatcher for desligado, ele não poderá ser reiniciado.

No WPF, um DispatcherObject só pode ser acessado pelo Dispatcher que está associado. Por exemplo, um thread em segundo plano não pode atualizar o conteúdo de um Button associado ao Dispatcher thread da interface do usuário. Para que o thread em segundo plano acesse a Content propriedade do Buttonthread em segundo plano, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread de interface do usuário associado. Isso é feito usando ou InvokeBeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila do Dispatcher na especificada DispatcherPriority.

Se BeginInvoke for chamado em um Dispatcher que tenha sido desligado, a propriedade de status do retornado DispatcherOperation será definida como Aborted.

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

Os objetos que derivam têm afinidade de DispatcherObject thread.

Os objetos dos Freezable quais derivam são livres quando são congelados. Para obter mais informações, consulte Visão geral dos objetos freezable.

Propriedades

Nome Description
CurrentDispatcher

Obtém o Dispatcher thread em execução no momento e cria um novo Dispatcher se ainda não estiver associado ao thread.

HasShutdownFinished

Determina se o Dispatcher desligamento foi concluído.

HasShutdownStarted

Determina se a opção Dispatcher está sendo fechada.

Hooks

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

Thread

Obtém o thread ao qual isso Dispatcher está associado.

Métodos

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

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

BeginInvoke(Delegate, Object[])

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

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

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

BeginInvoke(DispatcherPriority, Delegate, Object)

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

BeginInvoke(DispatcherPriority, Delegate)

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

BeginInvokeShutdown(DispatcherPriority)

Inicia o Dispatcher desligamento da assíncrona.

CheckAccess()

Determina se o thread de chamada é o thread associado a isso Dispatcher.

DisableProcessing()

Desabilita o processamento da Dispatcher fila.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
ExitAllFrames()

Solicita que todos os quadros sejam encerrados, incluindo quadros aninhados.

FromThread(Thread)

Obtém o Dispatcher thread especificado.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

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

Executa a síncrona especificada Action na prioridade especificada no thread ao qual ela Dispatcher está associada.

Invoke(Action, DispatcherPriority, CancellationToken)

Executa a síncrona especificada Action na prioridade especificada no thread ao qual ela Dispatcher está associada.

Invoke(Action, DispatcherPriority)

Executa a síncrona especificada Action na prioridade especificada no thread ao qual ela Dispatcher está associada.

Invoke(Action)

Executa a síncrona especificada Action no thread ao qual ela Dispatcher está associada.

Invoke(Delegate, DispatcherPriority, Object[])

Executa o delegado especificado na prioridade especificada com os argumentos especificados de forma síncrona no thread ao 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 período de tempo designado na prioridade especificada com os argumentos especificados de forma síncrona no thread ao qual está Dispatcher associado.

Invoke(Delegate, TimeSpan, Object[])

Executa o delegado especificado dentro do período de tempo designado na prioridade especificada com os argumentos especificados de forma síncrona no thread ao qual está Dispatcher associado.

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

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

Invoke(DispatcherPriority, Delegate, Object)

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

Invoke(DispatcherPriority, Delegate)

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

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

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

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

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

Invoke(DispatcherPriority, TimeSpan, Delegate)

Executa o delegado especificado de forma síncrona na prioridade especificada e com o valor de tempo limite especificado no thread que Dispatcher foi criado.

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

Executa a síncrona especificada Func<TResult> na prioridade especificada no thread ao qual ela Dispatcher está associada.

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

Executa a síncrona especificada Func<TResult> na prioridade especificada no thread ao qual ela Dispatcher está associada.

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

Executa a síncrona especificada Func<TResult> na prioridade especificada no thread ao qual ela Dispatcher está associada.

Invoke<TResult>(Func<TResult>)

Executa a síncrona especificada Func<TResult> no thread ao qual ela Dispatcher está associada.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Executa a especificada Action de forma assíncrona na prioridade especificada no thread ao qual ela Dispatcher está associada.

InvokeAsync(Action, DispatcherPriority)

Executa a especificada Action de forma assíncrona na prioridade especificada no thread ao qual ela Dispatcher está associada.

InvokeAsync(Action)

Executa a especificada Action de forma assíncrona no thread ao qual ela Dispatcher está associada.

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

Executa a especificada Func<TResult> de forma assíncrona na prioridade especificada no thread ao qual ela Dispatcher está associada.

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

Executa a especificada Func<TResult> de forma assíncrona na prioridade especificada no thread ao qual ela Dispatcher está associada.

InvokeAsync<TResult>(Func<TResult>)

Executa a especificada Func<TResult> de forma assíncrona no thread ao qual ela Dispatcher está associada.

InvokeShutdown()

Inicia o processo de desligamento de Dispatcher forma síncrona.

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
PushFrame(DispatcherFrame)

Insere um loop de execução.

Run()

Envia por push o quadro de execução principal na fila de eventos do Dispatcher.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
ValidatePriority(DispatcherPriority, String)

Determina se a prioridade especificada DispatcherPriority é válida.

VerifyAccess()

Determina se o thread de chamada tem acesso a isso Dispatcher.

Yield()

Cria um objeto aguardável que gera de volta o controle de forma assíncrona para o dispatcher atual e oferece uma oportunidade para o dispatcher processar outros eventos.

Yield(DispatcherPriority)

Cria um objeto aguardável que gera de volta o controle de forma assíncrona para o dispatcher atual e oferece uma oportunidade para o dispatcher processar outros eventos. O trabalho que ocorre quando o controle retorna ao código aguardando o resultado desse método é agendado com a prioridade especificada.

Eventos

Nome Description
ShutdownFinished

Ocorre quando o Dispatcher desligamento é concluído.

ShutdownStarted

Ocorre quando o Dispatcher botão começa a ser desligado.

UnhandledException

Ocorre quando uma exceção de thread é gerada e não executada durante a execução de um delegado por meio de Invoke ou BeginInvoke.

UnhandledExceptionFilter

Ocorre quando uma exceção de thread é gerada e não executada durante a execução de um delegado por meio ou InvokeBeginInvoke quando no estágio de filtro.

Métodos de Extensão

Nome Description
BeginInvoke(Dispatcher, Action, DispatcherPriority)

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

BeginInvoke(Dispatcher, Action)

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

Invoke(Dispatcher, Action, DispatcherPriority)

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

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

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

Invoke(Dispatcher, Action, TimeSpan)

Executa o delegado especificado de forma síncrona no thread no qual o especificado Dispatcher foi criado e interrompe a execução após o período de tempo limite especificado.

Invoke(Dispatcher, Action)

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

Aplica-se a

Confira também