Dispatcher.BeginInvoke Method

Definition

Executa o delegado de forma assíncrona no thread ao qual o Dispatcher está associado.Executes a delegate asynchronously on the thread the Dispatcher is associated with.

Overloads

BeginInvoke(Delegate, Object[])

Executa o delegado especificado de maneira assíncrona com os argumentos especificados no thread em que o Dispatcher foi criado.Executes the specified delegate asynchronously with the specified arguments on the thread that the Dispatcher was created on.

BeginInvoke(DispatcherPriority, Delegate)

Executa o delegado especificado de forma assíncrona na prioridade especificada no thread ao qual o Dispatcher está associado.Executes the specified delegate asynchronously at the specified priority on the thread the Dispatcher is associated with.

BeginInvoke(Delegate, DispatcherPriority, Object[])

Executa o delegado especificado assincronamente com os argumentos especificados, na prioridade especificada, no thread no qual o Dispatcher foi criado.Executes the specified delegate asynchronously with the specified arguments, at the specified priority, on the thread that the Dispatcher was created on.

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.Executes the specified delegate asynchronously at the specified priority and with the specified argument on the thread the Dispatcher is associated with.

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.Executes the specified delegate asynchronously at the specified priority and with the specified array of arguments on the thread the Dispatcher is associated with.

Remarks

Em WPFWPF, somente o thread que criou uma DispatcherObject pode acessar esse objeto.In WPFWPF, only the thread that created a DispatcherObject may access that object. Por exemplo, um thread em segundo plano que é rotacionado do thread da interface do usuário principal não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário.For example, a background thread that is spun off from the main UI thread cannot update the contents of a Button that was created on the UI thread. Para que o thread em segundo plano acesse a propriedade content da Button, o thread em segundo plano deve delegar o trabalho para o Dispatcher associado ao thread da interface do usuário.In order for the background thread to access the Content property of the Button, the background thread must delegate the work to the Dispatcher associated with the UI thread. Isso é feito com o uso de Invoke ou BeginInvoke.This is accomplished by using either Invoke or BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono.Invoke is synchronous and BeginInvoke is asynchronous. A operação é adicionada à fila de eventos do Dispatcher no DispatcherPriorityespecificado.The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

BeginInvoke é assíncrona; Portanto, o controle retorna imediatamente para o objeto de chamada depois que ele é chamado.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

BeginInvoke retorna um objeto DispatcherOperation que pode ser usado para interagir com o delegado quando o delegado está na fila de eventos.BeginInvoke returns a DispatcherOperation object that can be used to interact with the delegate when the delegate is in the event queue.

O objeto de DispatcherOperation retornado pelo BeginInvoke pode ser usado de várias maneiras para interagir com o delegado especificado, como:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Alterar a DispatcherPriority do delegado, pois ele está com a execução pendente na fila de eventos.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Removendo o delegado da fila de eventos.Removing the delegate from the event queue.

  • Aguardando o delegado retornar.Waiting for the delegate to return.

  • Obter o valor que o delegado retorna após ser executado.Obtaining the value that the delegate returns after it is executed.

Se várias chamadas de BeginInvoke forem feitas no mesmo DispatcherPriority, elas serão executadas na ordem em que as chamadas foram feitas.If multiple BeginInvoke calls are made at the same DispatcherPriority, they will be executed in the order the calls were made.

Se BeginInvoke for chamado em uma Dispatcher que foi desligada, a propriedade status da DispatcherOperation retornada será definida como Aborted.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

BeginInvoke(Delegate, Object[])

Executa o delegado especificado de maneira assíncrona com os argumentos especificados no thread em que o Dispatcher foi criado.Executes the specified delegate asynchronously with the specified arguments on the thread that the Dispatcher was created on.

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

Parameters

method
Delegate

O delegado para um método que usa os parâmetros especificados em args, que é enviado por push fila de eventos do Dispatcher.The delegate to a method that takes parameters specified in args, which is pushed onto the Dispatcher event queue.

args
Object[]

Uma matriz de objetos a serem passados como argumentos para o método em questão.An array of objects to pass as arguments to the given method. Pode ser null.Can be null.

Returns

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.An object, which is returned immediately after BeginInvoke is called, that can be used to interact with the delegate as it is pending execution in the event queue.

Remarks

O objeto de DispatcherOperation retornado pelo BeginInvoke pode ser usado de várias maneiras para interagir com o delegado especificado, como:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Alterar a DispatcherPriority do delegado, pois ele está com a execução pendente na fila de eventos.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Removendo o delegado da fila de eventos.Removing the delegate from the event queue.

  • Aguardando o delegado retornar.Waiting for the delegate to return.

  • Obter o valor que o delegado retorna após ser executado.Obtaining the value that the delegate returns after it is executed.

BeginInvoke é assíncrona; Portanto, o controle retorna imediatamente para o objeto de chamada depois que ele é chamado.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

Em WPFWPF, somente o thread que criou uma DispatcherObject pode acessar esse objeto.In WPFWPF, only the thread that created a DispatcherObject may access that object. Por exemplo, um thread em segundo plano que é rotacionado do thread da interface do usuário principal não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário.For example, a background thread that is spun off from the main UI thread cannot update the contents of a Button that was created on the UI thread. Para que o thread em segundo plano acesse a propriedade content da Button, o thread em segundo plano deve delegar o trabalho para o Dispatcher associado ao thread da interface do usuário.In order for the background thread to access the Content property of the Button, the background thread must delegate the work to the Dispatcher associated with the UI thread. Isso é feito com o uso de Invoke ou BeginInvoke.This is accomplished by using either Invoke or BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono.Invoke is synchronous and BeginInvoke is asynchronous. A operação é adicionada à fila de eventos do Dispatcher no DispatcherPriorityespecificado.The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

Se BeginInvoke for chamado em uma Dispatcher que foi desligada, a propriedade status da DispatcherOperation retornada será definida como Aborted.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

BeginInvoke(DispatcherPriority, Delegate)

Executa o delegado especificado de forma assíncrona na prioridade especificada no thread ao qual o Dispatcher está associado.Executes the specified delegate asynchronously at the specified priority on the thread the Dispatcher is associated with.

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);
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate) As DispatcherOperation

Parameters

priority
DispatcherPriority

A prioridade em que o método especificado é invocado, com relação às outras operações pendentes na fila de eventos do Dispatcher.The priority, relative to the other pending operations in the Dispatcher event queue, the specified method is invoked.

method
Delegate

O delegado para um método que não usa argumentos, que é enviado por push para a fila de eventos do Dispatcher.The delegate to a method that takes no arguments, which is pushed onto the Dispatcher event queue.

Returns

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.An object, which is returned immediately after BeginInvoke is called, that can be used to interact with the delegate as it is pending execution in the event queue.

Attributes

Exceptions

method é null.method is null.

priority não é um DispatcherPriority válido.priority is not a valid DispatcherPriority.

Examples

O exemplo a seguir mostra como posicionar uma operação em um Dispatcher.The following example shows how to place an operation onto a Dispatcher. Para obter o código-fonte completo deste exemplo, consulte aplicativo de thread único com exemplo de cálculo de longa execução.For the full source code of this example, see Single-Threaded Application with Long-Running Calculation Sample.

Primeiro, um delegado é criado e não aceita argumentos.First, a delegate is created that accepts no arguments.

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

Em seguida, BeginInvoke(DispatcherPriority, Delegate) é chamado.Next, BeginInvoke(DispatcherPriority, Delegate) is called. Como cada DispatcherObject tem uma propriedade que retorna o Dispatcher ao qual está associado, a Dispatcher desejada é obtida consultando o DispatcherObject, nesse caso, um Button chamado startStopButton.Because every DispatcherObject has a property that returns the Dispatcher it is associated with, the desired Dispatcher is obtained by querying the DispatcherObject, in this case a Button named startStopButton. A chamada para BeginInvoke(DispatcherPriority, Delegate) usa dois parâmetros: a prioridade, que é definida como DispatcherPriority.Normale o retorno de chamada, que é passado por meio de uma instância do NextPrimeDelegatedelegado.The call to BeginInvoke(DispatcherPriority, Delegate) takes two parameters: the priority, which is set to DispatcherPriority.Normal, and the callback, which is passed in through an instance of the delegate NextPrimeDelegate.

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

Remarks

Se várias chamadas de BeginInvoke forem feitas no mesmo DispatcherPriority, elas serão executadas na ordem em que as chamadas foram feitas.If multiple BeginInvoke calls are made at the same DispatcherPriority, they will be executed in the order the calls were made.

BeginInvoke retorna um objeto DispatcherOperation que pode ser usado para interagir com o delegado quando o delegado está na fila de eventos.BeginInvoke returns a DispatcherOperation object that can be used to interact with the delegate when the delegate is in the event queue.

O objeto de DispatcherOperation retornado pelo BeginInvoke pode ser usado de várias maneiras para interagir com o delegado especificado, como:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Alterar a DispatcherPriority do delegado, pois ele está com a execução pendente na fila de eventos.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Removendo o delegado da fila de eventos.Removing the delegate from the event queue.

  • Aguardando o delegado retornar.Waiting for the delegate to return.

  • Obter o valor que o delegado retorna após ser executado.Obtaining the value that the delegate returns after it is executed.

BeginInvoke é assíncrona; Portanto, o controle retorna imediatamente para o objeto de chamada depois que ele é chamado.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

Em WPFWPF, somente o thread que criou uma DispatcherObject pode acessar esse objeto.In WPFWPF, only the thread that created a DispatcherObject may access that object. Por exemplo, um thread em segundo plano que é rotacionado do thread da interface do usuário principal não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário.For example, a background thread that is spun off from the main UI thread cannot update the contents of a Button that was created on the UI thread. Para que o thread em segundo plano acesse a propriedade content da Button, o thread em segundo plano deve delegar o trabalho para o Dispatcher associado ao thread da interface do usuário.In order for the background thread to access the Content property of the Button, the background thread must delegate the work to the Dispatcher associated with the UI thread. Isso é feito com o uso de Invoke ou BeginInvoke.This is accomplished by using either Invoke or BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono.Invoke is synchronous and BeginInvoke is asynchronous. A operação é adicionada à fila de eventos do Dispatcher no DispatcherPriorityespecificado.The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

Se BeginInvoke for chamado em uma Dispatcher que foi desligada, a propriedade status da DispatcherOperation retornada será definida como Aborted.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

See also

BeginInvoke(Delegate, DispatcherPriority, Object[])

Executa o delegado especificado assincronamente com os argumentos especificados, na prioridade especificada, no thread no qual o Dispatcher foi criado.Executes the specified delegate asynchronously with the specified arguments, at the specified priority, on the thread that the Dispatcher was created on.

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

Parameters

method
Delegate

O delegado para um método que usa os parâmetros especificados em args, que é enviado por push fila de eventos do Dispatcher.The delegate to a method that takes parameters specified in args, which is pushed onto the Dispatcher event queue.

priority
DispatcherPriority

A prioridade em que o método especificado é invocado, com relação às outras operações pendentes na fila de eventos do Dispatcher.The priority, relative to the other pending operations in the Dispatcher event queue, the specified method is invoked.

args
Object[]

Uma matriz de objetos a serem passados como argumentos para o método em questão.An array of objects to pass as arguments to the given method. Pode ser null.Can be null.

Returns

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.An object, which is returned immediately after BeginInvoke is called, that can be used to interact with the delegate as it is pending execution in the event queue.

Remarks

O objeto de DispatcherOperation retornado pelo BeginInvoke pode ser usado de várias maneiras para interagir com o delegado especificado, como:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Alterar a DispatcherPriority do delegado, pois ele está com a execução pendente na fila de eventos.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Removendo o delegado da fila de eventos.Removing the delegate from the event queue.

  • Aguardando o delegado retornar.Waiting for the delegate to return.

  • Obter o valor que o delegado retorna após ser executado.Obtaining the value that the delegate returns after it is executed.

BeginInvoke é assíncrona; Portanto, o controle retorna imediatamente para o objeto de chamada depois que ele é chamado.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

Em WPFWPF, somente o thread que criou uma DispatcherObject pode acessar esse objeto.In WPFWPF, only the thread that created a DispatcherObject may access that object. Por exemplo, um thread em segundo plano que é rotacionado do thread da interface do usuário principal não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário.For example, a background thread that is spun off from the main UI thread cannot update the contents of a Button that was created on the UI thread. Para que o thread em segundo plano acesse a propriedade content da Button, o thread em segundo plano deve delegar o trabalho para o Dispatcher associado ao thread da interface do usuário.In order for the background thread to access the Content property of the Button, the background thread must delegate the work to the Dispatcher associated with the UI thread. Isso é feito com o uso de Invoke ou BeginInvoke.This is accomplished by using either Invoke or BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono.Invoke is synchronous and BeginInvoke is asynchronous. A operação é adicionada à fila de eventos do Dispatcher no DispatcherPriorityespecificado.The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

Se BeginInvoke for chamado em uma Dispatcher que foi desligada, a propriedade status da DispatcherOperation retornada será definida como Aborted.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

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.Executes the specified delegate asynchronously at the specified priority and with the specified argument on the thread the Dispatcher is associated with.

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);
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

Parameters

priority
DispatcherPriority

A prioridade em que o método especificado é invocado, com relação às outras operações pendentes na fila de eventos do Dispatcher.The priority, relative to the other pending operations in the Dispatcher event queue, the specified method is invoked.

method
Delegate

Um delegado para um método que usa um argumento, que é enviado por push para a fila de eventos do Dispatcher.A delegate to a method that takes one argument, which is pushed onto the Dispatcher event queue.

arg
Object

O objeto a ser passado como um argumento para o método especificado.The object to pass as an argument to the specified method.

Returns

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.An object, which is returned immediately after BeginInvoke is called, that can be used to interact with the delegate as it is pending execution in the event queue.

Attributes

Exceptions

method é null.method is null.

priority não é um DispatcherPriority válido.priority is not a valid DispatcherPriority.

Examples

O exemplo a seguir mostra como posicionar uma operação em um Dispatcher.The following example shows how to place an operation onto a Dispatcher.

Primeiro, é criado um delegado que aceita um argumento, neste caso, uma cadeia de caracteres.First, a delegate is created that accepts one argument, in this case a string.

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

Em seguida, BeginInvoke(DispatcherPriority, Delegate, Object) é chamado.Next, BeginInvoke(DispatcherPriority, Delegate, Object) is called. Como cada DispatcherObject tem uma propriedade que retorna o Dispatcher ao qual está associado, a Dispatcher desejada é obtida consultando o DispatcherObject, nesse caso, um Grid chamado tomorrowsWeather.Because every DispatcherObject has a property that returns the Dispatcher it is associated with, the desired Dispatcher is obtained by querying the DispatcherObject, in this case a Grid named tomorrowsWeather. A chamada para BeginInvoke(DispatcherPriority, Delegate, Object) usa três parâmetros: a prioridade, que é definida como DispatcherPriority.Normal; o retorno de chamada, que é passado por meio de uma instância do delegado OneArgDelegate; e uma cadeia de caracteres chamada weather, que é o argumento para o retorno de chamada.The call to BeginInvoke(DispatcherPriority, Delegate, Object) takes three parameters: the priority, which is set to DispatcherPriority.Normal; the callback, which is passed in through an instance of the delegate OneArgDelegate; and a string named weather, which is the argument for the callback.

// 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)

Remarks

Arg poderá ser null se nenhum argumento for necessário.Arg can be null if no arguments are needed.

BeginInvoke retorna um objeto DispatcherOperation que pode ser usado para interagir com o delegado quando o delegado está na fila de eventos.BeginInvoke returns a DispatcherOperation object that can be used to interact with the delegate when the delegate is in the event queue.

O objeto de DispatcherOperation retornado pelo BeginInvoke pode ser usado de várias maneiras para interagir com o delegado especificado, como:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Alterar a DispatcherPriority do delegado, pois ele está com a execução pendente na fila de eventos.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Removendo o delegado da fila de eventos.Removing the delegate from the event queue.

  • Aguardando o delegado retornar.Waiting for the delegate to return.

  • Obter o valor que o delegado retorna após ser executado.Obtaining the value that the delegate returns after it is executed.

BeginInvoke é assíncrona; Portanto, o controle retorna imediatamente para o objeto de chamada depois que ele é chamado.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

Em WPFWPF, somente o thread que criou uma DispatcherObject pode acessar esse objeto.In WPFWPF, only the thread that created a DispatcherObject may access that object. Por exemplo, um thread em segundo plano que é rotacionado do thread da interface do usuário principal não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário.For example, a background thread that is spun off from the main UI thread cannot update the contents of a Button that was created on the UI thread. Para que o thread em segundo plano acesse a propriedade content da Button, o thread em segundo plano deve delegar o trabalho para o Dispatcher associado ao thread da interface do usuário.In order for the background thread to access the content property of the Button, the background thread must delegate the work to the Dispatcher associated with the UI thread. Isso é feito com o uso de Invoke ou BeginInvoke.This is accomplished by using either Invoke or BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono.Invoke is synchronous and BeginInvoke is asynchronous. A operação é adicionada à fila de eventos do Dispatcher no DispatcherPriorityespecificado.The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

Se várias chamadas de BeginInvoke forem feitas no mesmo DispatcherPriority, elas serão executadas na ordem em que as chamadas foram feitas.If multiple BeginInvoke calls are made at the same DispatcherPriority, they will be executed in the order the calls were made.

Se BeginInvoke for chamado em uma Dispatcher que foi desligada, a propriedade status da DispatcherOperation retornada será definida como Aborted.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

See also

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.Executes the specified delegate asynchronously at the specified priority and with the specified array of arguments on the thread the Dispatcher is associated with.

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);
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

Parameters

priority
DispatcherPriority

A prioridade em que o método especificado é invocado, com relação às outras operações pendentes na fila de eventos do Dispatcher.The priority, relative to the other pending operations in the Dispatcher event queue, the specified method is invoked.

method
Delegate

Um delegado de um método que usa vários argumentos, que é enviado por push para a fila de eventos de Dispatcher.A delegate to a method that takes multiple arguments, which is pushed onto the Dispatcher event queue.

arg
Object

O objeto a ser passado como um argumento para o método especificado.The object to pass as an argument to the specified method.

args
Object[]

Uma matriz de objetos a serem passados como argumentos para o método especificado.An array of objects to pass as arguments to the specified method.

Returns

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.An object, which is returned immediately after BeginInvoke is called, that can be used to interact with the delegate as it is pending execution in the Dispatcher queue.

Attributes

Exceptions

method é null.method is null.

DispatcherPriority não é uma prioridade válida.DispatcherPriority is not a valid priority.

Remarks

O parâmetro arg pode ser null se nenhum argumento for necessário.The arg parameter can be null if no arguments are needed.

BeginInvoke retorna um objeto DispatcherOperation que pode ser usado para interagir com o delegado quando o delegado está na fila de eventos.BeginInvoke returns a DispatcherOperation object that can be used to interact with the delegate when the delegate is in the event queue.

O objeto de DispatcherOperation retornado pelo BeginInvoke pode ser usado de várias maneiras para interagir com o delegado especificado, como:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Alterar a DispatcherPriority do delegado, pois ele está com a execução pendente na fila de eventos.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Removendo o delegado da fila de eventos.Removing the delegate from the event queue.

  • Aguardando o delegado retornar.Waiting for the delegate to return.

  • Obter o valor que o delegado retorna após ser executado.Obtaining the value that the delegate returns after it is executed.

BeginInvoke é assíncrona; Portanto, o controle retorna imediatamente para o objeto de chamada depois que ele é chamado.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

Em WPFWPF, somente o thread que criou uma DispatcherObject pode acessar esse objeto.In WPFWPF, only the thread that created a DispatcherObject may access that object. Por exemplo, um thread em segundo plano que é rotacionado do thread da interface do usuário principal não pode atualizar o conteúdo de um Button que foi criado no thread da interface do usuário.For example, a background thread that is spun off from the main UI thread cannot update the contents of a Button that was created on the UI thread. Para que o thread em segundo plano acesse a propriedade content da Button, o thread em segundo plano deve delegar o trabalho para o Dispatcher associado ao thread da interface do usuário.In order for the background thread to access the Content property of the Button, the background thread must delegate the work to the Dispatcher associated with the UI thread. Isso é feito com o uso de Invoke ou BeginInvoke.This is accomplished by using either Invoke or BeginInvoke. Invoke é síncrono e BeginInvoke é assíncrono.Invoke is synchronous and BeginInvoke is asynchronous. A operação é adicionada à fila de eventos do Dispatcher no DispatcherPriorityespecificado.The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

Se várias chamadas de BeginInvoke forem feitas no mesmo DispatcherPriority, elas serão executadas na ordem em que as chamadas foram feitas.If multiple BeginInvoke calls are made at the same DispatcherPriority, they will be executed in the order the calls were made.

Se BeginInvoke for chamado em uma Dispatcher que foi desligada, a propriedade status da DispatcherOperation retornada será definida como Aborted.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

See also

Applies to