Dispatcher.BeginInvoke Metoda

Definicja

Wykonuje delegata asynchronicznie w wątku, Dispatcher z którym jest skojarzony.Executes a delegate asynchronously on the thread the Dispatcher is associated with.

Przeciążenia

BeginInvoke(Delegate, Object[])

Wykonuje określony delegat asynchronicznie z określonymi argumentami w wątku, w którym Dispatcher został utworzony.Executes the specified delegate asynchronously with the specified arguments on the thread that the Dispatcher was created on.

BeginInvoke(DispatcherPriority, Delegate)

Wykonuje określony delegat asynchronicznie o określonym priorytecie w wątku, z którym Dispatcher jest skojarzony.Executes the specified delegate asynchronously at the specified priority on the thread the Dispatcher is associated with.

BeginInvoke(Delegate, DispatcherPriority, Object[])

Wykonuje określony delegat asynchronicznie z określonymi argumentami o określonym priorytecie w wątku, Dispatcher w którym został utworzony.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)

Wykonuje określony delegat asynchronicznie o określonym priorytecie i z określonym argumentem w wątku, z którym Dispatcher jest skojarzony.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[])

Wykonuje określony delegat asynchronicznie o określonym priorytecie i z określoną tablicą argumentów w wątku, Dispatcher z którym jest skojarzona.Executes the specified delegate asynchronously at the specified priority and with the specified array of arguments on the thread the Dispatcher is associated with.

Uwagi

W WPF tylko wątek, który utworzył element, DispatcherObject może uzyskać dostęp do tego obiektu.In WPF, only the thread that created a DispatcherObject may access that object. Na przykład wątek w tle, który jest odsunięty od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości programu Button , który został utworzony w wątku interfejsu użytkownika.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. Aby wątek w tle mógł uzyskać dostęp do właściwości zawartości Button , wątek w tle musi delegować prace do Dispatcher skojarzonego z WĄTKIEM interfejsu użytkownika.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. Jest to realizowane za pomocą albo Invoke BeginInvoke .This is accomplished by using either Invoke or BeginInvoke. Invoke jest synchroniczny i BeginInvoke jest asynchroniczny.Invoke is synchronous and BeginInvoke is asynchronous. Operacja zostanie dodana do kolejki zdarzeń o Dispatcher określonej wartości DispatcherPriority .The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

BeginInvoke jest asynchroniczny; w związku z tym, formant natychmiast wraca do wywołującego obiektu po wywołaniu.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

BeginInvoke zwraca DispatcherOperation obiekt, którego można użyć do współdziałania z delegatem, gdy delegat znajduje się w kolejce zdarzeń.BeginInvoke returns a DispatcherOperation object that can be used to interact with the delegate when the delegate is in the event queue.

DispatcherOperationObiekt zwrócony przez BeginInvoke może być używany na kilka sposobów do współpracy z określonym delegatem, na przykład:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Zmiana DispatcherPriority obiektu delegowanego, ponieważ oczekuje na wykonanie w kolejce zdarzeń.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Usuwanie delegata z kolejki zdarzeń.Removing the delegate from the event queue.

  • Oczekiwanie na zwrócenie przez delegata.Waiting for the delegate to return.

  • Uzyskiwanie wartości zwracanej przez delegata po wykonaniu.Obtaining the value that the delegate returns after it is executed.

Jeśli wiele BeginInvoke wywołań jest wykonywanych w tym samym czasie DispatcherPriority , zostaną one wykonane w kolejności, w jakiej zostały wykonane.If multiple BeginInvoke calls are made at the same DispatcherPriority, they will be executed in the order the calls were made.

Jeśli BeginInvoke jest wywoływana na, Dispatcher która ma wyłączony, właściwość status zwracanej DispatcherOperation jest ustawiona na 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[])

Wykonuje określony delegat asynchronicznie z określonymi argumentami w wątku, w którym Dispatcher został utworzony.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

Parametry

method
Delegate

Delegat do metody, która pobiera parametry określone w args , który jest wypychany do Dispatcher kolejki zdarzeń.The delegate to a method that takes parameters specified in args, which is pushed onto the Dispatcher event queue.

args
Object[]

Tablica obiektów do przekazania jako argumenty do danej metody.An array of objects to pass as arguments to the given method. Może być null .Can be null.

Zwraca

DispatcherOperation

Obiekt, który jest zwracany bezpośrednio po BeginInvoke wywołaniu, może być używany do współdziałania z delegatem, ponieważ oczekuje na wykonanie w kolejce zdarzeń.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.

Uwagi

DispatcherOperationObiekt zwrócony przez BeginInvoke może być używany na kilka sposobów do współpracy z określonym delegatem, na przykład:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Zmiana DispatcherPriority obiektu delegowanego, ponieważ oczekuje na wykonanie w kolejce zdarzeń.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Usuwanie delegata z kolejki zdarzeń.Removing the delegate from the event queue.

  • Oczekiwanie na zwrócenie przez delegata.Waiting for the delegate to return.

  • Uzyskiwanie wartości zwracanej przez delegata po wykonaniu.Obtaining the value that the delegate returns after it is executed.

BeginInvoke jest asynchroniczny; w związku z tym, formant natychmiast wraca do wywołującego obiektu po wywołaniu.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

W WPF tylko wątek, który utworzył element, DispatcherObject może uzyskać dostęp do tego obiektu.In WPF, only the thread that created a DispatcherObject may access that object. Na przykład wątek w tle, który jest odsunięty od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości programu Button , który został utworzony w wątku interfejsu użytkownika.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. Aby wątek w tle mógł uzyskać dostęp do właściwości zawartości Button , wątek w tle musi delegować prace do Dispatcher skojarzonego z WĄTKIEM interfejsu użytkownika.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. Jest to realizowane za pomocą albo Invoke BeginInvoke .This is accomplished by using either Invoke or BeginInvoke. Invoke jest synchroniczny i BeginInvoke jest asynchroniczny.Invoke is synchronous and BeginInvoke is asynchronous. Operacja zostanie dodana do kolejki zdarzeń o Dispatcher określonej wartości DispatcherPriority .The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

Jeśli BeginInvoke jest wywoływana na, Dispatcher która ma wyłączony, właściwość status zwracanej DispatcherOperation jest ustawiona na Aborted .If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

Dotyczy

BeginInvoke(DispatcherPriority, Delegate)

Wykonuje określony delegat asynchronicznie o określonym priorytecie w wątku, z którym Dispatcher jest skojarzony.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);
[<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

Parametry

priority
DispatcherPriority

Priorytet względem innych oczekujących operacji w Dispatcher kolejce zdarzeń, za pomocą których wywoływana jest określona metoda.The priority, relative to the other pending operations in the Dispatcher event queue, with which the specified method is invoked.

method
Delegate

Delegat do metody, która nie przyjmuje argumentów, która jest wypychana do Dispatcher kolejki zdarzeń.The delegate to a method that takes no arguments, which is pushed onto the Dispatcher event queue.

Zwraca

DispatcherOperation

Obiekt, który jest zwracany bezpośrednio po BeginInvoke wywołaniu, może być używany do współdziałania z delegatem, ponieważ oczekuje na wykonanie w kolejce zdarzeń.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.

Atrybuty

Wyjątki

method to null.method is null.

priority jest nieprawidłowy DispatcherPriority .priority is not a valid DispatcherPriority.

Przykłady

Poniższy przykład pokazuje, jak umieścić operację na Dispatcher .The following example shows how to place an operation onto a Dispatcher. Aby uzyskać pełny kod źródłowy tego przykładu, zobacz temat aplikacja jednowątkowa z przykładem Long-Running obliczeń.For the full source code of this example, see Single-Threaded Application with Long-Running Calculation Sample.

Najpierw utworzono delegata, który nie akceptuje żadnych argumentów.First, a delegate is created that accepts no arguments.

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

Następnie BeginInvoke(DispatcherPriority, Delegate) jest wywoływana.Next, BeginInvoke(DispatcherPriority, Delegate) is called. Ze względu na to, DispatcherObject że każdy ma właściwość, która zwraca, że Dispatcher jest skojarzona z, żądany Dispatcher jest uzyskiwany za pomocą zapytania do DispatcherObject , w tym przypadku Button nazwana 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. Wywołanie BeginInvoke(DispatcherPriority, Delegate) przyjmuje dwa parametry: priorytet, który jest ustawiony na DispatcherPriority.Normal i wywołanie zwrotne, które jest przesyłane za pomocą wystąpienia delegata NextPrimeDelegate .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))

Uwagi

Jeśli wiele BeginInvoke wywołań jest wykonywanych w tym samym czasie DispatcherPriority , zostaną one wykonane w kolejności, w jakiej zostały wykonane.If multiple BeginInvoke calls are made at the same DispatcherPriority, they will be executed in the order the calls were made.

BeginInvoke zwraca DispatcherOperation obiekt, którego można użyć do współdziałania z delegatem, gdy delegat znajduje się w kolejce zdarzeń.BeginInvoke returns a DispatcherOperation object that can be used to interact with the delegate when the delegate is in the event queue.

DispatcherOperationObiekt zwrócony przez BeginInvoke może być używany na kilka sposobów do współpracy z określonym delegatem, na przykład:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Zmiana DispatcherPriority obiektu delegowanego, ponieważ oczekuje na wykonanie w kolejce zdarzeń.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Usuwanie delegata z kolejki zdarzeń.Removing the delegate from the event queue.

  • Oczekiwanie na zwrócenie przez delegata.Waiting for the delegate to return.

  • Uzyskiwanie wartości zwracanej przez delegata po wykonaniu.Obtaining the value that the delegate returns after it is executed.

BeginInvoke jest asynchroniczny; w związku z tym, formant natychmiast wraca do wywołującego obiektu po wywołaniu.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

W WPF tylko wątek, który utworzył element, DispatcherObject może uzyskać dostęp do tego obiektu.In WPF, only the thread that created a DispatcherObject may access that object. Na przykład wątek w tle, który jest odsunięty od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości programu Button , który został utworzony w wątku interfejsu użytkownika.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. Aby wątek w tle mógł uzyskać dostęp do właściwości zawartości Button , wątek w tle musi delegować prace do Dispatcher skojarzonego z WĄTKIEM interfejsu użytkownika.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. Jest to realizowane za pomocą albo Invoke BeginInvoke .This is accomplished by using either Invoke or BeginInvoke. Invoke jest synchroniczny i BeginInvoke jest asynchroniczny.Invoke is synchronous and BeginInvoke is asynchronous. Operacja zostanie dodana do kolejki zdarzeń o Dispatcher określonej wartości DispatcherPriority .The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

Jeśli BeginInvoke jest wywoływana na, Dispatcher która ma wyłączony, właściwość status zwracanej DispatcherOperation jest ustawiona na Aborted .If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

Dotyczy

BeginInvoke(Delegate, DispatcherPriority, Object[])

Wykonuje określony delegat asynchronicznie z określonymi argumentami o określonym priorytecie w wątku, Dispatcher w którym został utworzony.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

Parametry

method
Delegate

Delegat do metody, która pobiera parametry określone w args , który jest wypychany do Dispatcher kolejki zdarzeń.The delegate to a method that takes parameters specified in args, which is pushed onto the Dispatcher event queue.

priority
DispatcherPriority

Priorytet względem innych oczekujących operacji w Dispatcher kolejce zdarzeń, za pomocą których wywoływana jest określona metoda.The priority, relative to the other pending operations in the Dispatcher event queue, with which the specified method is invoked.

args
Object[]

Tablica obiektów do przekazania jako argumenty do danej metody.An array of objects to pass as arguments to the given method. Może być null .Can be null.

Zwraca

DispatcherOperation

Obiekt, który jest zwracany bezpośrednio po BeginInvoke wywołaniu, może być używany do współdziałania z delegatem, ponieważ oczekuje na wykonanie w kolejce zdarzeń.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.

Uwagi

DispatcherOperationObiekt zwrócony przez BeginInvoke może być używany na kilka sposobów do współpracy z określonym delegatem, na przykład:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Zmiana DispatcherPriority obiektu delegowanego, ponieważ oczekuje na wykonanie w kolejce zdarzeń.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Usuwanie delegata z kolejki zdarzeń.Removing the delegate from the event queue.

  • Oczekiwanie na zwrócenie przez delegata.Waiting for the delegate to return.

  • Uzyskiwanie wartości zwracanej przez delegata po wykonaniu.Obtaining the value that the delegate returns after it is executed.

BeginInvoke jest asynchroniczny; w związku z tym, formant natychmiast wraca do wywołującego obiektu po wywołaniu.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

W WPF tylko wątek, który utworzył element, DispatcherObject może uzyskać dostęp do tego obiektu.In WPF, only the thread that created a DispatcherObject may access that object. Na przykład wątek w tle, który jest odsunięty od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości programu Button , który został utworzony w wątku interfejsu użytkownika.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. Aby wątek w tle mógł uzyskać dostęp do właściwości zawartości Button , wątek w tle musi delegować prace do Dispatcher skojarzonego z WĄTKIEM interfejsu użytkownika.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. Jest to realizowane za pomocą albo Invoke BeginInvoke .This is accomplished by using either Invoke or BeginInvoke. Invoke jest synchroniczny i BeginInvoke jest asynchroniczny.Invoke is synchronous and BeginInvoke is asynchronous. Operacja zostanie dodana do kolejki zdarzeń o Dispatcher określonej wartości DispatcherPriority .The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

Jeśli BeginInvoke jest wywoływana na, Dispatcher która ma wyłączony, właściwość status zwracanej DispatcherOperation jest ustawiona na Aborted .If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

Dotyczy

BeginInvoke(DispatcherPriority, Delegate, Object)

Wykonuje określony delegat asynchronicznie o określonym priorytecie i z określonym argumentem w wątku, z którym Dispatcher jest skojarzony.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);
[<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

Parametry

priority
DispatcherPriority

Priorytet względem innych oczekujących operacji w Dispatcher kolejce zdarzeń, za pomocą których wywoływana jest określona metoda.The priority, relative to the other pending operations in the Dispatcher event queue, with which the specified method is invoked.

method
Delegate

Delegat do metody, która przyjmuje jeden argument, który jest wypychany do Dispatcher kolejki zdarzeń.A delegate to a method that takes one argument, which is pushed onto the Dispatcher event queue.

arg
Object

Obiekt, który ma zostać przekazany jako argument do określonej metody.The object to pass as an argument to the specified method.

Zwraca

DispatcherOperation

Obiekt, który jest zwracany bezpośrednio po BeginInvoke wywołaniu, może być używany do współdziałania z delegatem, ponieważ oczekuje na wykonanie w kolejce zdarzeń.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.

Atrybuty

Wyjątki

method to null.method is null.

priority jest nieprawidłowy DispatcherPriority .priority is not a valid DispatcherPriority.

Przykłady

Poniższy przykład pokazuje, jak umieścić operację na Dispatcher .The following example shows how to place an operation onto a Dispatcher.

Najpierw tworzony jest delegat, który akceptuje jeden argument, w tym przypadku ciąg.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)

Następnie BeginInvoke(DispatcherPriority, Delegate, Object) jest wywoływana.Next, BeginInvoke(DispatcherPriority, Delegate, Object) is called. Ze względu na to, DispatcherObject że każdy ma właściwość, która zwraca, że Dispatcher jest skojarzona z, żądany Dispatcher jest uzyskiwany za pomocą zapytania do DispatcherObject , w tym przypadku Grid nazwana 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. Wywołanie BeginInvoke(DispatcherPriority, Delegate, Object) przyjmuje trzy parametry: priorytet, który jest ustawiony na DispatcherPriority.Normal ; wywołanie zwrotne, które jest przesyłane za pomocą wystąpienia delegata OneArgDelegate ; i ciąg o nazwie weather , który jest argumentem wywołania zwrotnego.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)

Uwagi

arg może być null niezbędny, jeśli nie są spełnione żadne argumenty.arg can be null if no arguments are needed.

BeginInvoke zwraca DispatcherOperation obiekt, którego można użyć do współdziałania z delegatem, gdy delegat znajduje się w kolejce zdarzeń.BeginInvoke returns a DispatcherOperation object that can be used to interact with the delegate when the delegate is in the event queue.

DispatcherOperationObiekt zwrócony przez BeginInvoke może być używany na kilka sposobów do współpracy z określonym delegatem, na przykład:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Zmiana DispatcherPriority obiektu delegowanego, ponieważ oczekuje na wykonanie w kolejce zdarzeń.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Usuwanie delegata z kolejki zdarzeń.Removing the delegate from the event queue.

  • Oczekiwanie na zwrócenie przez delegata.Waiting for the delegate to return.

  • Uzyskiwanie wartości zwracanej przez delegata po wykonaniu.Obtaining the value that the delegate returns after it is executed.

BeginInvoke jest asynchroniczny; w związku z tym, formant natychmiast wraca do wywołującego obiektu po wywołaniu.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

W WPF tylko wątek, który utworzył element, DispatcherObject może uzyskać dostęp do tego obiektu.In WPF, only the thread that created a DispatcherObject may access that object. Na przykład wątek w tle, który jest odsunięty od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości programu Button , który został utworzony w wątku interfejsu użytkownika.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. Aby wątek w tle mógł uzyskać dostęp do właściwości zawartości Button , wątek w tle musi delegować prace do Dispatcher skojarzonego z WĄTKIEM interfejsu użytkownika.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. Jest to realizowane za pomocą albo Invoke BeginInvoke .This is accomplished by using either Invoke or BeginInvoke. Invoke jest synchroniczny i BeginInvoke jest asynchroniczny.Invoke is synchronous and BeginInvoke is asynchronous. Operacja zostanie dodana do kolejki zdarzeń o Dispatcher określonej wartości DispatcherPriority .The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

Jeśli wiele BeginInvoke wywołań jest wykonywanych w tym samym czasie DispatcherPriority , zostaną one wykonane w kolejności, w jakiej zostały wykonane.If multiple BeginInvoke calls are made at the same DispatcherPriority, they will be executed in the order the calls were made.

Jeśli BeginInvoke jest wywoływana na, Dispatcher która ma wyłączony, właściwość status zwracanej DispatcherOperation jest ustawiona na Aborted .If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

Dotyczy

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

Wykonuje określony delegat asynchronicznie o określonym priorytecie i z określoną tablicą argumentów w wątku, Dispatcher z którym jest skojarzona.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);
[<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

Parametry

priority
DispatcherPriority

Priorytet względem innych oczekujących operacji w Dispatcher kolejce zdarzeń, za pomocą których wywoływana jest określona metoda.The priority, relative to the other pending operations in the Dispatcher event queue, with which the specified method is invoked.

method
Delegate

Delegat do metody, która przyjmuje wiele argumentów, które są wypychane do Dispatcher kolejki zdarzeń.A delegate to a method that takes multiple arguments, which is pushed onto the Dispatcher event queue.

arg
Object

Obiekt, który ma zostać przekazany jako argument do określonej metody.The object to pass as an argument to the specified method.

args
Object[]

Tablica obiektów do przekazania jako argumenty do określonej metody.An array of objects to pass as arguments to the specified method.

Zwraca

DispatcherOperation

Obiekt, który jest zwracany bezpośrednio po BeginInvoke wywołaniu, może być używany do współdziałania z delegatem, ponieważ oczekuje na wykonanie w Dispatcher kolejce.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.

Atrybuty

Wyjątki

method to null.method is null.

DispatcherPriority nie jest prawidłowym priorytetem.DispatcherPriority is not a valid priority.

Uwagi

Ten arg parametr może być null niezbędny, jeśli nie są spełnione żadne argumenty.The arg parameter can be null if no arguments are needed.

BeginInvoke zwraca DispatcherOperation obiekt, którego można użyć do współdziałania z delegatem, gdy delegat znajduje się w kolejce zdarzeń.BeginInvoke returns a DispatcherOperation object that can be used to interact with the delegate when the delegate is in the event queue.

DispatcherOperationObiekt zwrócony przez BeginInvoke może być używany na kilka sposobów do współpracy z określonym delegatem, na przykład:The DispatcherOperation object returned by BeginInvoke can be used in several ways to interact with the specified delegate, such as:

  • Zmiana DispatcherPriority obiektu delegowanego, ponieważ oczekuje na wykonanie w kolejce zdarzeń.Changing the DispatcherPriority of the delegate as it is pending execution in the event queue.

  • Usuwanie delegata z kolejki zdarzeń.Removing the delegate from the event queue.

  • Oczekiwanie na zwrócenie przez delegata.Waiting for the delegate to return.

  • Uzyskiwanie wartości zwracanej przez delegata po wykonaniu.Obtaining the value that the delegate returns after it is executed.

BeginInvoke jest asynchroniczny; w związku z tym, formant natychmiast wraca do wywołującego obiektu po wywołaniu.BeginInvoke is asynchronous; therefore, control returns immediately to the calling object after it is called.

W WPF tylko wątek, który utworzył element, DispatcherObject może uzyskać dostęp do tego obiektu.In WPF, only the thread that created a DispatcherObject may access that object. Na przykład wątek w tle, który jest odsunięty od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości programu Button , który został utworzony w wątku interfejsu użytkownika.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. Aby wątek w tle mógł uzyskać dostęp do właściwości zawartości Button , wątek w tle musi delegować prace do Dispatcher skojarzonego z WĄTKIEM interfejsu użytkownika.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. Jest to realizowane za pomocą albo Invoke BeginInvoke .This is accomplished by using either Invoke or BeginInvoke. Invoke jest synchroniczny i BeginInvoke jest asynchroniczny.Invoke is synchronous and BeginInvoke is asynchronous. Operacja zostanie dodana do kolejki zdarzeń o Dispatcher określonej wartości DispatcherPriority .The operation is added to the event queue of the Dispatcher at the specified DispatcherPriority.

Jeśli wiele BeginInvoke wywołań jest wykonywanych w tym samym czasie DispatcherPriority , zostaną one wykonane w kolejności, w jakiej zostały wykonane.If multiple BeginInvoke calls are made at the same DispatcherPriority, they will be executed in the order the calls were made.

Jeśli BeginInvoke jest wywoływana na, Dispatcher która ma wyłączony, właściwość status zwracanej DispatcherOperation jest ustawiona na Aborted .If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

Dotyczy