Dispatcher.BeginInvoke Método

Definição

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

Sobrecargas

Nome Description
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)

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

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(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, 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.

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 InvokeBeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos do 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 pode BeginInvoke 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 delegado retornar.

  • Obtendo o valor retornado pelo delegado após a execução.

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.

BeginInvoke(Delegate, Object[])

Executa o delegado especificado de forma assíncrona com os argumentos especificados no thread em que foi Dispatcher 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 para um método que usa parâmetros especificados, argsque é enviado por push para a fila de Dispatcher eventos.

args
Object[]

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

Retornos

Um objeto, que é retornado imediatamente após BeginInvoke ser chamado, que pode ser usado para interagir com o delegado, pois ele está aguardando execução na fila de eventos.

Comentários

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á aguardando execução na fila de eventos.

  • Removendo o delegado da fila de eventos.

  • Aguardando o delegado retornar.

  • Obtendo o valor retornado pelo delegado 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 de interface do usuário associado. Isso é feito usando ou InvokeBeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos 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.

Aplica-se a

BeginInvoke(DispatcherPriority, Delegate)

Executa o delegado especificado de forma assíncrona na prioridade especificada no thread ao qual ele 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 a qual o método especificado é invocado.

method
Delegate

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

Retornos

Um objeto, que é retornado imediatamente após BeginInvoke ser chamado, que pode ser usado para interagir com o delegado, pois ele está aguardando execução na fila de eventos.

Atributos

Exceções

method é null.

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. 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 tempo DispatcherPriority, 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 pode BeginInvoke 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 delegado retornar.

  • Obtendo o valor retornado pelo delegado 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 de interface do usuário associado. Isso é feito usando ou InvokeBeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos 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.

Confira também

Aplica-se a

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.

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 para um método que usa parâmetros especificados, argsque é enviado por push para a fila de Dispatcher eventos.

priority
DispatcherPriority

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

args
Object[]

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

Retornos

Um objeto, que é retornado imediatamente após BeginInvoke ser chamado, que pode ser usado para interagir com o delegado, pois ele está aguardando execução na fila de eventos.

Comentários

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á aguardando execução na fila de eventos.

  • Removendo o delegado da fila de eventos.

  • Aguardando o delegado retornar.

  • Obtendo o valor retornado pelo delegado 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 de interface do usuário associado. Isso é feito usando ou InvokeBeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos 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.

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 está Dispatcher 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 a qual 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 Dispatcher eventos.

arg
Object

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

Retornos

Um objeto, que é retornado imediatamente após BeginInvoke ser chamado, que pode ser usado para interagir com o delegado, pois ele está aguardando execução na fila de eventos.

Atributos

Exceções

method é null.

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á aguardando execução na fila de eventos.

  • Removendo o delegado da fila de eventos.

  • Aguardando o delegado retornar.

  • Obtendo o valor retornado pelo delegado 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 de interface do usuário associado. Isso é feito usando ou InvokeBeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos do Dispatcher na 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 especificada no thread à qual está Dispatcher 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 a qual o método especificado é invocado.

method
Delegate

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

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

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

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á aguardando execução na fila de eventos.

  • Removendo o delegado da fila de eventos.

  • Aguardando o delegado retornar.

  • Obtendo o valor retornado pelo delegado 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 de interface do usuário associado. Isso é feito usando ou InvokeBeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono. A operação é adicionada à fila de eventos do Dispatcher na 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