Dispatcher.BeginInvoke Método

Definição

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

Sobrecargas

BeginInvoke(Delegate, Object[])

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

BeginInvoke(DispatcherPriority, Delegate)

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

BeginInvoke(Delegate, DispatcherPriority, Object[])

Executa o delegado especificado assincronamente com os argumentos especificados, na prioridade especificada, no thread no qual o Dispatcher foi criado.

BeginInvoke(DispatcherPriority, Delegate, Object)

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

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

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

Comentários

No WPF, somente o thread que criou um DispatcherObject pode acessar esse objeto. Por exemplo, um thread em segundo plano que é desativado do thread principal da interface do usuário não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário. Para que o thread em segundo plano acesse a propriedade Content 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 Invoke BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos da Dispatcher na especificada DispatcherPriority.

BeginInvoke é assíncrono; portanto, o controle retorna imediatamente ao objeto de chamada depois que ele é chamado.

BeginInvoke retorna um DispatcherOperation objeto que pode ser usado para interagir com o delegado quando o delegado está na fila de eventos.

O DispatcherOperation objeto retornado por BeginInvoke ele pode ser usado de várias maneiras para interagir com o delegado especificado, como:

  • Alterando o DispatcherPriority delegado, pois ele está aguardando execução na fila de eventos.

  • Removendo o delegado da fila de eventos.

  • Aguardando o retorno do delegado.

  • Obtendo o valor que o delegado retorna depois que ele é executado.

Se várias BeginInvoke chamadas forem feitas ao mesmo DispatcherPrioritytempo, elas serão executadas na ordem em que as chamadas foram feitas.

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

BeginInvoke(Delegate, Object[])

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

public:
 System::Windows::Threading::DispatcherOperation ^ BeginInvoke(Delegate ^ method, ... cli::array <System::Object ^> ^ args);
public System.Windows.Threading.DispatcherOperation BeginInvoke (Delegate method, params object[] args);
member this.BeginInvoke : Delegate * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (method As Delegate, ParamArray args As Object()) As DispatcherOperation

Parâmetros

method
Delegate

O delegado de um método que usa os parâmetros especificados em args, que é enviado por push para a fila de eventos de Dispatcher.

args
Object[]

Uma matriz de objetos a serem passados como argumentos para o método em questão. Pode ser null.

Retornos

DispatcherOperation

Um objeto, retornado imediatamente após BeginInvoke ser chamado, que pode ser usado para interagir com o delegado enquanto ele aguarda a execução na fila de eventos.

Comentários

O DispatcherOperation objeto retornado por BeginInvoke ele pode ser usado de várias maneiras para interagir com o delegado especificado, como:

  • Alterando o DispatcherPriority delegado, pois ele está aguardando execução na fila de eventos.

  • Removendo o delegado da fila de eventos.

  • Aguardando o retorno do delegado.

  • Obtendo o valor que o delegado retorna depois que ele é executado.

BeginInvoke é assíncrono; portanto, o controle retorna imediatamente ao objeto de chamada depois que ele é chamado.

No WPF, somente o thread que criou um DispatcherObject pode acessar esse objeto. Por exemplo, um thread em segundo plano que é desativado do thread principal da interface do usuário não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário. Para que o thread em segundo plano acesse a propriedade Content 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 Invoke BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos da 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.

Aplica-se a

BeginInvoke(DispatcherPriority, Delegate)

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

public:
 System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke (System.Windows.Threading.DispatcherPriority priority, Delegate method);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate) As DispatcherOperation

Parâmetros

priority
DispatcherPriority

A prioridade, em relação às outras operações pendentes na Dispatcher fila de eventos, com as quais o método especificado é invocado.

method
Delegate

O delegado para um método que não usa argumentos, que é enviado por push para a fila de eventos do Dispatcher.

Retornos

DispatcherOperation

Um objeto, retornado imediatamente após BeginInvoke ser chamado, que pode ser usado para interagir com o delegado enquanto ele aguarda a execução na fila de eventos.

Atributos

Exceções

method é null.

priority não é um DispatcherPriority válido.

Exemplos

O exemplo a seguir mostra como colocar uma operação em um Dispatcher. Para obter o código-fonte completo deste exemplo, consulte o aplicativo de thread único com Long-Running exemplo de cálculo.

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

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

Em seguida, BeginInvoke(DispatcherPriority, Delegate) é chamado. Como cada DispatcherObject um tem uma propriedade que retorna a Dispatcher que está associada, o desejado Dispatcher é obtido consultando o DispatcherObject, nesse caso, um Button nome startStopButton. A chamada para BeginInvoke(DispatcherPriority, Delegate) usar 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

Se várias BeginInvoke chamadas forem feitas ao mesmo DispatcherPrioritytempo, elas serão executadas na ordem em que as chamadas foram feitas.

BeginInvoke retorna um DispatcherOperation objeto que pode ser usado para interagir com o delegado quando o delegado está na fila de eventos.

O DispatcherOperation objeto retornado por BeginInvoke ele pode ser usado de várias maneiras para interagir com o delegado especificado, como:

  • Alterando o DispatcherPriority delegado, pois ele está aguardando execução na fila de eventos.

  • Removendo o delegado da fila de eventos.

  • Aguardando o retorno do delegado.

  • Obtendo o valor que o delegado retorna depois que ele é executado.

BeginInvoke é assíncrono; portanto, o controle retorna imediatamente ao objeto de chamada depois que ele é chamado.

No WPF, somente o thread que criou um DispatcherObject pode acessar esse objeto. Por exemplo, um thread em segundo plano que é desativado do thread principal da interface do usuário não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário. Para que o thread em segundo plano acesse a propriedade Content 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 Invoke BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos da 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.

Confira também

Aplica-se a

BeginInvoke(Delegate, DispatcherPriority, Object[])

Executa o delegado especificado assincronamente com os argumentos especificados, na prioridade especificada, no thread no qual o Dispatcher foi criado.

public:
 System::Windows::Threading::DispatcherOperation ^ BeginInvoke(Delegate ^ method, System::Windows::Threading::DispatcherPriority priority, ... cli::array <System::Object ^> ^ args);
public System.Windows.Threading.DispatcherOperation BeginInvoke (Delegate method, System.Windows.Threading.DispatcherPriority priority, params object[] args);
member this.BeginInvoke : Delegate * System.Windows.Threading.DispatcherPriority * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (method As Delegate, priority As DispatcherPriority, ParamArray args As Object()) As DispatcherOperation

Parâmetros

method
Delegate

O delegado de um método que usa os parâmetros especificados em args, que é enviado por push para a fila de eventos de Dispatcher.

priority
DispatcherPriority

A prioridade, em relação às outras operações pendentes na Dispatcher fila de eventos, com as quais o método especificado é invocado.

args
Object[]

Uma matriz de objetos a serem passados como argumentos para o método em questão. Pode ser null.

Retornos

DispatcherOperation

Um objeto, retornado imediatamente após BeginInvoke ser chamado, que pode ser usado para interagir com o delegado enquanto ele aguarda a execução na fila de eventos.

Comentários

O DispatcherOperation objeto retornado por BeginInvoke ele pode ser usado de várias maneiras para interagir com o delegado especificado, como:

  • Alterando o DispatcherPriority delegado, pois ele está aguardando execução na fila de eventos.

  • Removendo o delegado da fila de eventos.

  • Aguardando o retorno do delegado.

  • Obtendo o valor que o delegado retorna depois que ele é executado.

BeginInvoke é assíncrono; portanto, o controle retorna imediatamente ao objeto de chamada depois que ele é chamado.

No WPF, somente o thread que criou um DispatcherObject pode acessar esse objeto. Por exemplo, um thread em segundo plano que é desativado do thread principal da interface do usuário não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário. Para que o thread em segundo plano acesse a propriedade Content do Buttonthread em segundo plano, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread associado à interface do usuário. Isso é feito usando ou Invoke BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos na Dispatcher especificada DispatcherPriority.

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

Aplica-se a

BeginInvoke(DispatcherPriority, Delegate, Object)

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

public:
 System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke (System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate * obj -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate, arg As Object) As DispatcherOperation

Parâmetros

priority
DispatcherPriority

A prioridade, em relação às outras operações pendentes na Dispatcher fila de eventos, com as quais o método especificado é invocado.

method
Delegate

Um delegado para um método que usa um argumento, que é enviado por push para a fila de eventos do Dispatcher.

arg
Object

O objeto a ser passado como um argumento para o método especificado.

Retornos

DispatcherOperation

Um objeto, retornado imediatamente após BeginInvoke ser chamado, que pode ser usado para interagir com o delegado enquanto ele aguarda a execução na fila de eventos.

Atributos

Exceções

method é null.

priority não é um DispatcherPriority válido.

Exemplos

O exemplo a seguir mostra como colocar uma operação em um Dispatcher.

Primeiro, um delegado é criado que aceita um argumento, nesse caso, uma cadeia de caracteres.

private delegate void OneArgDelegate(String arg);
Private Delegate Sub OneArgDelegate(ByVal arg As String)

Em seguida, BeginInvoke(DispatcherPriority, Delegate, Object) é chamado. Como cada DispatcherObject um tem uma propriedade que retorna a Dispatcher que está associada, o desejado Dispatcher é obtido consultando o DispatcherObject, nesse caso, um Grid nome tomorrowsWeather. A chamada para BeginInvoke(DispatcherPriority, Delegate, Object) usar três parâmetros: a prioridade, que é definida como DispatcherPriority.Normal; o retorno de chamada, que é passado por uma instância do delegado OneArgDelegate; e uma cadeia de caracteres nomeada weather, que é o argumento para o retorno de chamada.

// Schedule the update function in the UI thread.
tomorrowsWeather.Dispatcher.BeginInvoke(
    System.Windows.Threading.DispatcherPriority.Normal,
    new OneArgDelegate(UpdateUserInterface), 
    weather);
' Schedule the update function in the UI thread.
tomorrowsWeather.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, New OneArgDelegate(AddressOf UpdateUserInterface), weather)

Comentários

arg pode ser null se nenhum argumento for necessário.

BeginInvoke retorna um DispatcherOperation objeto que pode ser usado para interagir com o delegado quando o delegado está na fila de eventos.

O DispatcherOperation objeto retornado pode BeginInvoke ser usado de várias maneiras para interagir com o delegado especificado, como:

  • Alterando o DispatcherPriority delegado, pois ele está pendente de execução na fila de eventos.

  • Removendo o delegado da fila de eventos.

  • Aguardando o delegado retornar.

  • Obtendo o valor que o delegado retorna após a execução.

BeginInvoke é assíncrono; portanto, o controle retorna imediatamente ao objeto de chamada depois que ele é chamado.

No WPF, somente o thread que criou um DispatcherObject pode acessar esse objeto. Por exemplo, um thread em segundo plano que é desativado do thread principal da interface do usuário não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário. Para que o thread em segundo plano acesse a propriedade de conteúdo do Buttonthread em segundo plano, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread associado à interface do usuário. Isso é feito usando ou Invoke BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos na Dispatcher especificada DispatcherPriority.

Se várias BeginInvoke chamadas forem feitas ao mesmo tempo DispatcherPriority, elas serão executadas na ordem em que as chamadas foram feitas.

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

Confira também

Aplica-se a

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

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

public:
 System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg, ... cli::array <System::Object ^> ^ args);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke (System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg, params object[] args);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate * obj * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate, arg As Object, ParamArray args As Object()) As DispatcherOperation

Parâmetros

priority
DispatcherPriority

A prioridade, em relação às outras operações pendentes na Dispatcher fila de eventos, com as quais o método especificado é invocado.

method
Delegate

Um delegado de um método que usa vários argumentos, que é enviado por push para a fila de eventos de Dispatcher.

arg
Object

O objeto a ser passado como um argumento para o método especificado.

args
Object[]

Uma matriz de objetos a serem passados como argumentos para o método especificado.

Retornos

DispatcherOperation

Um objeto, é retornado imediatamente após BeginInvoke ser chamado, que pode ser usado para interagir com o delegado enquanto ele aguarda execução pendente na fila Dispatcher.

Atributos

Exceções

method é null.

DispatcherPriority não é uma prioridade válida.

Comentários

O arg parâmetro poderá ser null se nenhum argumento for necessário.

BeginInvoke retorna um DispatcherOperation objeto que pode ser usado para interagir com o delegado quando o delegado está na fila de eventos.

O DispatcherOperation objeto retornado pode BeginInvoke ser usado de várias maneiras para interagir com o delegado especificado, como:

  • Alterando o DispatcherPriority delegado, pois ele está pendente de execução na fila de eventos.

  • Removendo o delegado da fila de eventos.

  • Aguardando o delegado retornar.

  • Obtendo o valor que o delegado retorna após a execução.

BeginInvoke é assíncrono; portanto, o controle retorna imediatamente ao objeto de chamada depois que ele é chamado.

No WPF, somente o thread que criou um DispatcherObject pode acessar esse objeto. Por exemplo, um thread em segundo plano que é desativado do thread principal da interface do usuário não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário. Para que o thread em segundo plano acesse a propriedade Content do Buttonthread em segundo plano, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread associado à interface do usuário. Isso é feito usando ou Invoke BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos na Dispatcher especificada DispatcherPriority.

Se várias BeginInvoke chamadas forem feitas ao mesmo tempo DispatcherPriority, elas serão executadas na ordem em que as chamadas foram feitas.

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

Confira também

Aplica-se a