Dispatcher.BeginInvoke Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Executa um delegado de forma assíncrona no thread ao qual está Dispatcher associado.
Sobrecargas
| Name | Description |
|---|---|
| BeginInvoke(Delegate, Object[]) |
Executa o delegado especificado de forma assíncrona com os argumentos especificados no thread onde foi criado Dispatcher . |
| BeginInvoke(DispatcherPriority, Delegate) |
Executa o delegado especificado de forma assíncrona na prioridade especificada no thread ao qual está Dispatcher associado. |
| 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(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, 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. |
Observações
Em WPF, apenas o thread que criou um DispatcherObject pode aceder a esse objeto. Por exemplo, um thread em segundo plano que é spin-off do thread principal da interface não pode atualizar o conteúdo de um Button que foi criado no thread da interface. Para que o thread em segundo plano aceda à propriedade Content do Button, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread associado ao thread UI. Isto é conseguido usando ou InvokeBeginInvoke. Invoke é síncrona e BeginInvoke é assíncrona. A operação é adicionada à fila de eventos do Dispatcher no especificado DispatcherPriority.
BeginInvoke é assíncrono; portanto, o controlo retorna imediatamente ao objeto que chama após este ser chamado.
BeginInvoke devolve um DispatcherOperation objeto que pode ser usado para interagir com o delegado quando este está na fila de eventos.
O DispatcherOperation objeto devolvido por BeginInvoke pode ser usado de várias formas para interagir com o delegado especificado, tais como:
Alterar o DispatcherPriority do delegado enquanto está pendente de execução na fila de eventos.
Remover o delegado da fila de eventos.
À espera que o delegado regresse.
Obtendo o valor que o delegado devolve após a execução.
Se várias BeginInvoke chamadas forem feitas ao mesmo DispatcherPrioritytempo, elas serão executadas pela ordem em que foram feitas.
Se BeginInvoke for chamado em um Dispatcher que desligou, a propriedade de estado do retornado DispatcherOperation é definida para Aborted.
BeginInvoke(Delegate, Object[])
Executa o delegado especificado de forma assíncrona com os argumentos especificados no thread onde foi criado Dispatcher .
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 recebe parâmetros especificados em args, que é empurrado para a Dispatcher fila de eventos.
- args
- Object[]
Um array de objetos para passar como argumentos ao método dado. Pode ser null.
Devoluções
Um objeto, que é devolvido imediatamente a seguir BeginInvoke , é chamado, que pode ser usado para interagir com o delegado enquanto este está pendente de execução na fila de eventos.
Observações
O DispatcherOperation objeto devolvido por BeginInvoke pode ser usado de várias formas para interagir com o delegado especificado, tais como:
Alterar o DispatcherPriority do delegado enquanto está pendente de execução na fila de eventos.
Remover o delegado da fila de eventos.
À espera que o delegado regresse.
Obtendo o valor que o delegado devolve após a execução.
BeginInvoke é assíncrono; portanto, o controlo retorna imediatamente ao objeto que chama após este ser chamado.
Em WPF, apenas o thread que criou um DispatcherObject pode aceder a esse objeto. Por exemplo, um thread em segundo plano que é spin-off do thread principal da interface não pode atualizar o conteúdo de um Button que foi criado no thread da interface. Para que o thread em segundo plano aceda à propriedade Content do Button, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread associado ao thread UI. Isto é conseguido usando ou InvokeBeginInvoke. Invoke é síncrona e BeginInvoke é assíncrona. A operação é adicionada à fila de eventos do Dispatcher no especificado DispatcherPriority.
Se BeginInvoke for chamado em um Dispatcher que desligou, a propriedade de estado do retornado DispatcherOperation é definida para Aborted.
Aplica-se a
BeginInvoke(DispatcherPriority, Delegate)
Executa o delegado especificado de forma assíncrona na prioridade especificada no thread ao qual está Dispatcher 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, relativa à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 é empurrado para a Dispatcher fila de eventos.
Devoluções
Um objeto, que é devolvido imediatamente a seguir BeginInvoke , é chamado, que pode ser usado para interagir com o delegado enquanto este está pendente de execução na fila de eventos.
- Atributos
Exceções
method é null.
priority não é um DispatcherPriorityválido.
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. Como cada DispatcherObject possui uma propriedade que devolve o Dispatcher a que está associado, o desejado Dispatcher obtém-se consultando o DispatcherObject, neste caso um Button nome startStopButton. A chamada a 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
Se várias BeginInvoke chamadas forem feitas ao mesmo DispatcherPrioritytempo, elas serão executadas pela ordem em que foram feitas.
BeginInvoke devolve um DispatcherOperation objeto que pode ser usado para interagir com o delegado quando este está na fila de eventos.
O DispatcherOperation objeto devolvido por BeginInvoke pode ser usado de várias formas para interagir com o delegado especificado, tais como:
Alterar o DispatcherPriority do delegado enquanto está pendente de execução na fila de eventos.
Remover o delegado da fila de eventos.
À espera que o delegado regresse.
Obtendo o valor que o delegado devolve após a execução.
BeginInvoke é assíncrono; portanto, o controlo retorna imediatamente ao objeto que chama após este ser chamado.
Em WPF, apenas o thread que criou um DispatcherObject pode aceder a esse objeto. Por exemplo, um thread em segundo plano que é spin-off do thread principal da interface não pode atualizar o conteúdo de um Button que foi criado no thread da interface. Para que o thread em segundo plano aceda à propriedade Content do Button, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread associado ao thread UI. Isto é conseguido usando ou InvokeBeginInvoke. Invoke é síncrona e BeginInvoke é assíncrona. A operação é adicionada à fila de eventos do Dispatcher no especificado DispatcherPriority.
Se BeginInvoke for chamado em um Dispatcher que desligou, a propriedade de estado do retornado DispatcherOperation é definida para Aborted.
Ver 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 onde foi criado Dispatcher .
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 recebe parâmetros especificados em args, que é empurrado para a Dispatcher fila de eventos.
- priority
- DispatcherPriority
A prioridade, relativa às outras operações pendentes na Dispatcher fila de eventos, com a qual o método especificado é invocado.
- args
- Object[]
Um array de objetos para passar como argumentos ao método dado. Pode ser null.
Devoluções
Um objeto, que é devolvido imediatamente a seguir BeginInvoke , é chamado, que pode ser usado para interagir com o delegado enquanto este está pendente de execução na fila de eventos.
Observações
O DispatcherOperation objeto devolvido por BeginInvoke pode ser usado de várias formas para interagir com o delegado especificado, tais como:
Alterar o DispatcherPriority do delegado enquanto está pendente de execução na fila de eventos.
Remover o delegado da fila de eventos.
À espera que o delegado regresse.
Obtendo o valor que o delegado devolve após a execução.
BeginInvoke é assíncrono; portanto, o controlo retorna imediatamente ao objeto que chama após este ser chamado.
Em WPF, apenas o thread que criou um DispatcherObject pode aceder a esse objeto. Por exemplo, um thread em segundo plano que é spin-off do thread principal da interface não pode atualizar o conteúdo de um Button que foi criado no thread da interface. Para que o thread em segundo plano aceda à propriedade Content do Button, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread associado ao thread UI. Isto é conseguido usando ou InvokeBeginInvoke. Invoke é síncrona e BeginInvoke é assíncrona. A operação é adicionada à fila de eventos do Dispatcher no especificado DispatcherPriority.
Se BeginInvoke for chamado em um Dispatcher que desligou, a propriedade de estado do retornado DispatcherOperation é definida para Aborted.
Aplica-se a
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.
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, relativa à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 recebe um argumento, que é empurrado para a Dispatcher fila de eventos.
- arg
- Object
O objeto a passar como argumento ao método especificado.
Devoluções
Um objeto, que é devolvido imediatamente a seguir BeginInvoke , é chamado, que pode ser usado para interagir com o delegado enquanto este está pendente de execução na fila de eventos.
- Atributos
Exceções
method é null.
priority não é um DispatcherPriorityválido.
Exemplos
O exemplo seguinte mostra como colocar uma operação sobre um Dispatcher.
Primeiro, cria-se um delegado que aceita um argumento, neste caso uma cadeia.
private delegate void OneArgDelegate(String arg);
Private Delegate Sub OneArgDelegate(ByVal arg As String)
A seguir, BeginInvoke(DispatcherPriority, Delegate, Object) é chamado. Como cada DispatcherObject possui uma propriedade que devolve o Dispatcher a que está associado, o desejado Dispatcher obtém-se consultando o DispatcherObject, neste caso um Grid nome tomorrowsWeather. A chamada para BeginInvoke(DispatcherPriority, Delegate, Object) assume três parâmetros: a prioridade, que é definida para DispatcherPriority.Normal; a chamada de retorno, que é passada através de uma instância do delegado OneArgDelegate; e uma cadeia chamada weather, que é o argumento para a chamada de retorno.
// 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)
Observações
arg Pode ser null , se não forem necessários argumentos.
BeginInvoke devolve um DispatcherOperation objeto que pode ser usado para interagir com o delegado quando este está na fila de eventos.
O DispatcherOperation objeto devolvido por BeginInvoke pode ser usado de várias formas para interagir com o delegado especificado, tais como:
Alterar o DispatcherPriority do delegado enquanto está pendente de execução na fila de eventos.
Remover o delegado da fila de eventos.
À espera que o delegado regresse.
Obtendo o valor que o delegado devolve após a execução.
BeginInvoke é assíncrono; portanto, o controlo retorna imediatamente ao objeto que chama após este ser chamado.
Em WPF, apenas o thread que criou um DispatcherObject pode aceder a esse objeto. Por exemplo, um thread em segundo plano que é spin-off do thread principal da interface não pode atualizar o conteúdo de um Button que foi criado no thread da interface. Para que o thread em segundo plano aceda à propriedade de conteúdo do Button, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread associado à interface. Isto é conseguido usando ou InvokeBeginInvoke. Invoke é síncrona e BeginInvoke é assíncrona. A operação é adicionada à fila de eventos do Dispatcher no especificado DispatcherPriority.
Se várias BeginInvoke chamadas forem feitas ao mesmo DispatcherPrioritytempo, elas serão executadas pela ordem em que foram feitas.
Se BeginInvoke for chamado em um Dispatcher que desligou, a propriedade de estado do retornado DispatcherOperation é definida para Aborted.
Ver também
Aplica-se a
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.
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, relativa à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 recebe múltiplos argumentos, que é empurrado para a Dispatcher fila de eventos.
- arg
- Object
O objeto a passar como argumento ao método especificado.
- args
- Object[]
Um array de objetos para passar como argumentos ao método especificado.
Devoluções
Um objeto, que é devolvido imediatamente a seguir BeginInvoke , é chamado, que pode ser usado para interagir com o delegado enquanto este está pendente de execução na Dispatcher fila.
- Atributos
Exceções
method é null.
DispatcherPriority não é uma prioridade válida.
Observações
O arg parâmetro pode ser null se não forem necessários argumentos.
BeginInvoke devolve um DispatcherOperation objeto que pode ser usado para interagir com o delegado quando este está na fila de eventos.
O DispatcherOperation objeto devolvido por BeginInvoke pode ser usado de várias formas para interagir com o delegado especificado, tais como:
Alterar o DispatcherPriority do delegado enquanto está pendente de execução na fila de eventos.
Remover o delegado da fila de eventos.
À espera que o delegado regresse.
Obtendo o valor que o delegado devolve após a execução.
BeginInvoke é assíncrono; portanto, o controlo retorna imediatamente ao objeto que chama após este ser chamado.
Em WPF, apenas o thread que criou um DispatcherObject pode aceder a esse objeto. Por exemplo, um thread em segundo plano que é spin-off do thread principal da interface não pode atualizar o conteúdo de um Button que foi criado no thread da interface. Para que o thread em segundo plano aceda à propriedade Content do Button, o thread em segundo plano deve delegar o trabalho ao Dispatcher thread associado ao thread UI. Isto é conseguido usando ou InvokeBeginInvoke. Invoke é síncrona e BeginInvoke é assíncrona. A operação é adicionada à fila de eventos do Dispatcher no especificado DispatcherPriority.
Se várias BeginInvoke chamadas forem feitas ao mesmo DispatcherPrioritytempo, elas serão executadas pela ordem em que foram feitas.
Se BeginInvoke for chamado em um Dispatcher que desligou, a propriedade de estado do retornado DispatcherOperation é definida para Aborted.