Freigeben über


Dispatcher.BeginInvoke Methode

Definition

Führt eine Delegaten asynchron auf dem Thread aus, dem der Dispatcher zugeordnet ist.

Überlädt

BeginInvoke(Delegate, Object[])

Führt den angegebenen Delegaten asynchron mit den angegebenen Argumenten für den Thread aus, für den der Dispatcher erstellt wurde.

BeginInvoke(DispatcherPriority, Delegate)

Führt den angegebenen Delegaten asynchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

BeginInvoke(Delegate, DispatcherPriority, Object[])

Führt den angegebenen Delegaten asynchron mit den angegebenen Argumenten und der angegebenen Priorität für den Thread aus, für den der Dispatcher erstellt wurde.

BeginInvoke(DispatcherPriority, Delegate, Object)

Führt den angegebenen Delegaten asynchron mit der angegebenen Priorität und dem angegebenen Argument auf dem Thread aus, dem der Dispatcher zugeordnet ist.

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

Führt den angegebenen Delegaten asynchron mit der angegebenen Priorität und dem angegebenen Argumentarray auf dem Thread aus, dem der Dispatcher zugeordnet ist.

Hinweise

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptoberflächenthread gedreht wird, den Inhalt eines Button auf dem UI-Thread erstellten Elements nicht aktualisieren. Damit der Hintergrundthread auf die Inhaltseigenschaft des ButtonInhalts zugreifen kann, muss der Hintergrundthread die Arbeit an den Dispatcher zugeordneten UI-Thread delegieren. Dies wird mithilfe von entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange des Dispatcher angegebenen DispatcherPriorityHinzugefügt.

BeginInvoke ist asynchron; Daher gibt das Steuerelement sofort an das aufrufende Objekt zurück, nachdem es aufgerufen wird.

BeginInvoke gibt ein DispatcherOperation Objekt zurück, das zum Interagieren mit dem Stellvertretung verwendet werden kann, wenn sich der Stellvertretung in der Ereigniswarteschlange befindet.

Das DispatcherOperation von ihnen zurückgegebene BeginInvoke Objekt kann auf verschiedene Arten verwendet werden, um mit dem angegebenen Stellvertretung zu interagieren, z. B. folgendes:

  • Ändern des DispatcherPriority Stellvertretungsvorgangs, da die Ausführung in der Ereigniswarteschlange aussteht.

  • Entfernen der Stellvertretung aus der Ereigniswarteschlange.

  • Warten sie, bis der Stellvertretung zurückgegeben werden soll.

  • Abrufen des Werts, den der Stellvertretung nach der Ausführung zurückgibt.

Wenn mehrere BeginInvoke Anrufe gleichzeitig DispatcherPriorityausgeführt werden, werden sie in der Reihenfolge ausgeführt, in der die Anrufe vorgenommen wurden.

Wenn BeginInvoke sie auf ein Dispatcher heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft des zurückgegebenen DispatcherOperation Objekts auf Aborted"festgelegt" festgelegt.

BeginInvoke(Delegate, Object[])

Führt den angegebenen Delegaten asynchron mit den angegebenen Argumenten für den Thread aus, für den der Dispatcher erstellt wurde.

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

Parameter

method
Delegate

Der Delegat für eine Methode, die in args angegebene Parameter akzeptiert und in die Dispatcher-Ereigniswarteschlange gestellt wird.

args
Object[]

Ein Array von Objekten, die als Argumente an die angegebene Methode übergeben werden sollen. Kann null sein.

Gibt zurück

DispatcherOperation

Ein Objekt, das unmittelbar nach dem Aufruf von BeginInvoke zurückgegeben wird und für die Interaktion mit dem Delegaten verwendet werden kann, während im Delegaten die Ausführung einer Aufgabe in der Warteschlange steht.

Hinweise

Das DispatcherOperation von ihnen zurückgegebene BeginInvoke Objekt kann auf verschiedene Arten verwendet werden, um mit dem angegebenen Stellvertretung zu interagieren, z. B. folgendes:

  • Ändern des DispatcherPriority Stellvertretungsvorgangs, da die Ausführung in der Ereigniswarteschlange aussteht.

  • Entfernen der Stellvertretung aus der Ereigniswarteschlange.

  • Warten sie, bis der Stellvertretung zurückgegeben werden soll.

  • Abrufen des Werts, den der Stellvertretung nach der Ausführung zurückgibt.

BeginInvoke ist asynchron; Daher gibt das Steuerelement sofort an das aufrufende Objekt zurück, nachdem es aufgerufen wird.

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptoberflächenthread gedreht wird, den Inhalt eines Button auf dem UI-Thread erstellten Elements nicht aktualisieren. Damit der Hintergrundthread auf die Inhaltseigenschaft des ButtonInhalts zugreifen kann, muss der Hintergrundthread die Arbeit an den Dispatcher zugeordneten UI-Thread delegieren. Dies wird mithilfe von entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange des Dispatcher angegebenen DispatcherPriorityHinzugefügt.

Wenn BeginInvoke sie auf ein Dispatcher heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft des zurückgegebenen DispatcherOperation Objekts auf Aborted"festgelegt" festgelegt.

Gilt für

BeginInvoke(DispatcherPriority, Delegate)

Führt den angegebenen Delegaten asynchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

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

Parameter

priority
DispatcherPriority

Die Priorität relativ zu den anderen ausstehenden Vorgängen in der Ereigniswarteschlange, mit der Dispatcher die angegebene Methode aufgerufen wird.

method
Delegate

Der Delegat zu einer Methode, die keine Argumente erwartet und in die Dispatcher-Ereigniswarteschlange gestellt wird.

Gibt zurück

DispatcherOperation

Ein Objekt, das unmittelbar nach dem Aufruf von BeginInvoke zurückgegeben wird und für die Interaktion mit dem Delegaten verwendet werden kann, während im Delegaten die Ausführung einer Aufgabe in der Warteschlange steht.

Attribute

Ausnahmen

method ist null.

priority ist kein gültiger DispatcherPriority.

Beispiele

Im folgenden Beispiel wird gezeigt, wie ein Vorgang auf eine Dispatcher. Für den vollständigen Quellcode dieses Beispiels finden Sie unter Single-Threaded-Anwendung mit Long-Running Berechnungsbeispiel.

Zunächst wird eine Stellvertretung erstellt, die keine Argumente akzeptiert.

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

BeginInvoke(DispatcherPriority, Delegate) Als Nächstes wird aufgerufen. Da jede DispatcherObject Eigenschaft eine Eigenschaft zurückgibt, mit der Dispatcher sie verknüpft ist, wird der gewünschte Dispatcher Wert durch Abfragen des DispatcherObject, in diesem Fall ein Button benannter startStopButtonWert abgerufen. Der Aufruf BeginInvoke(DispatcherPriority, Delegate) verwendet zwei Parameter: die Priorität, auf die festgelegt ist DispatcherPriority.Normal, und den Rückruf, der über eine Instanz des Stellvertretungs NextPrimeDelegateübergeben wird.

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

Hinweise

Wenn mehrere BeginInvoke Anrufe gleichzeitig DispatcherPriorityausgeführt werden, werden sie in der Reihenfolge ausgeführt, in der die Anrufe vorgenommen wurden.

BeginInvoke gibt ein DispatcherOperation Objekt zurück, das zum Interagieren mit dem Stellvertretung verwendet werden kann, wenn sich der Stellvertretung in der Ereigniswarteschlange befindet.

Das DispatcherOperation von ihnen zurückgegebene BeginInvoke Objekt kann auf verschiedene Arten verwendet werden, um mit dem angegebenen Stellvertretung zu interagieren, z. B. folgendes:

  • Ändern des DispatcherPriority Stellvertretungsvorgangs, da die Ausführung in der Ereigniswarteschlange aussteht.

  • Entfernen der Stellvertretung aus der Ereigniswarteschlange.

  • Warten sie, bis der Stellvertretung zurückgegeben werden soll.

  • Abrufen des Werts, den der Stellvertretung nach der Ausführung zurückgibt.

BeginInvoke ist asynchron; Daher gibt das Steuerelement sofort an das aufrufende Objekt zurück, nachdem es aufgerufen wird.

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptoberflächenthread gedreht wird, den Inhalt eines Button auf dem UI-Thread erstellten Elements nicht aktualisieren. Damit der Hintergrundthread auf die Inhaltseigenschaft des ButtonInhalts zugreifen kann, muss der Hintergrundthread die Arbeit an den Dispatcher zugeordneten UI-Thread delegieren. Dies wird mithilfe von entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange des Dispatcher angegebenen DispatcherPriorityHinzugefügt.

Wenn BeginInvoke sie auf ein Dispatcher heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft des zurückgegebenen DispatcherOperation Objekts auf Aborted"festgelegt" festgelegt.

Siehe auch

Gilt für

BeginInvoke(Delegate, DispatcherPriority, Object[])

Führt den angegebenen Delegaten asynchron mit den angegebenen Argumenten und der angegebenen Priorität für den Thread aus, für den der Dispatcher erstellt wurde.

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

Parameter

method
Delegate

Der Delegat für eine Methode, die in args angegebene Parameter akzeptiert und in die Dispatcher-Ereigniswarteschlange gestellt wird.

priority
DispatcherPriority

Die Priorität relativ zu den anderen ausstehenden Vorgängen in der Ereigniswarteschlange, mit der Dispatcher die angegebene Methode aufgerufen wird.

args
Object[]

Ein Array von Objekten, die als Argumente an die angegebene Methode übergeben werden sollen. Kann null sein.

Gibt zurück

DispatcherOperation

Ein Objekt, das unmittelbar nach dem Aufruf von BeginInvoke zurückgegeben wird und für die Interaktion mit dem Delegaten verwendet werden kann, während im Delegaten die Ausführung einer Aufgabe in der Warteschlange steht.

Hinweise

Das DispatcherOperation von ihnen zurückgegebene BeginInvoke Objekt kann auf verschiedene Arten verwendet werden, um mit dem angegebenen Stellvertretung zu interagieren, z. B. folgendes:

  • Ändern des DispatcherPriority Stellvertretungsvorgangs, da die Ausführung in der Ereigniswarteschlange aussteht.

  • Entfernen der Stellvertretung aus der Ereigniswarteschlange.

  • Warten sie, bis der Stellvertretung zurückgegeben werden soll.

  • Abrufen des Werts, den der Stellvertretung nach der Ausführung zurückgibt.

BeginInvoke ist asynchron; Daher gibt das Steuerelement sofort an das aufrufende Objekt zurück, nachdem es aufgerufen wird.

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptoberflächenthread gedreht wird, den Inhalt eines Button auf dem UI-Thread erstellten Elements nicht aktualisieren. Damit der Hintergrundthread auf die Inhaltseigenschaft des ButtonInhalts zugreifen kann, muss der Hintergrundthread die Arbeit an den Dispatcher zugeordneten UI-Thread delegieren. Dies wird mithilfe von entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange des Dispatcher angegebenen DispatcherPriorityHinzugefügt.

Wenn BeginInvoke sie auf ein Dispatcher heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft des zurückgegebenen DispatcherOperation Objekts auf Aborted"festgelegt" festgelegt.

Gilt für

BeginInvoke(DispatcherPriority, Delegate, Object)

Führt den angegebenen Delegaten asynchron mit der angegebenen Priorität und dem angegebenen Argument auf dem Thread aus, dem der Dispatcher zugeordnet ist.

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

Parameter

priority
DispatcherPriority

Die Priorität relativ zu den anderen ausstehenden Vorgängen in der Ereigniswarteschlange, mit der Dispatcher die angegebene Methode aufgerufen wird.

method
Delegate

Ein Delegat zu einer Methode, die ein Argument erwartet und in die Dispatcher-Ereigniswarteschlange gestellt wird.

arg
Object

Das Objekt, das als Argument an die angegebene Methode übergeben wird.

Gibt zurück

DispatcherOperation

Ein Objekt, das unmittelbar nach dem Aufruf von BeginInvoke zurückgegeben wird und für die Interaktion mit dem Delegaten verwendet werden kann, während im Delegaten die Ausführung einer Aufgabe in der Warteschlange steht.

Attribute

Ausnahmen

method ist null.

priority ist kein gültiger DispatcherPriority.

Beispiele

Im folgenden Beispiel wird gezeigt, wie ein Vorgang auf eine Dispatcher.

Zunächst wird ein Stellvertretung erstellt, der ein Argument akzeptiert, in diesem Fall eine Zeichenfolge.

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

BeginInvoke(DispatcherPriority, Delegate, Object) Als Nächstes wird aufgerufen. Da jede DispatcherObject Eigenschaft eine Eigenschaft zurückgibt, mit der Dispatcher sie verknüpft ist, wird der gewünschte Dispatcher Wert durch Abfragen des DispatcherObject, in diesem Fall ein Grid benannter tomorrowsWeatherWert abgerufen. Der Aufruf BeginInvoke(DispatcherPriority, Delegate, Object) verwendet drei Parameter: die Priorität, die auf ; den Rückruf festgelegt DispatcherPriority.Normalist, der in einer Instanz des Stellvertretungs OneArgDelegateübergeben wird; und eine Zeichenfolge weathernamens , die das Argument für den Rückruf ist.

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

Hinweise

arg kann sein null , wenn keine Argumente benötigt werden.

BeginInvoke gibt ein DispatcherOperation Objekt zurück, das zum Interagieren mit dem Stellvertretung verwendet werden kann, wenn sich der Stellvertretung in der Ereigniswarteschlange befindet.

Das DispatcherOperation von ihnen zurückgegebene BeginInvoke Objekt kann auf verschiedene Arten verwendet werden, um mit dem angegebenen Stellvertretung zu interagieren, z. B. folgendes:

  • Ändern des DispatcherPriority Stellvertretungsvorgangs, da die Ausführung in der Ereigniswarteschlange aussteht.

  • Entfernen der Stellvertretung aus der Ereigniswarteschlange.

  • Warten sie, bis der Stellvertretung zurückgegeben werden soll.

  • Abrufen des Werts, den der Stellvertretung nach der Ausführung zurückgibt.

BeginInvoke ist asynchron; Daher gibt das Steuerelement sofort an das aufrufende Objekt zurück, nachdem es aufgerufen wird.

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptoberflächenthread gedreht wird, den Inhalt eines Button auf dem UI-Thread erstellten Elements nicht aktualisieren. Damit der Hintergrundthread auf die Inhaltseigenschaft des Hintergrundthreads Buttonzugreifen kann, muss der Hintergrundthread die Arbeit an den Dispatcher zugeordneten UI-Thread delegieren. Dies wird mithilfe von entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange des Dispatcher angegebenen DispatcherPriorityHinzugefügt.

Wenn mehrere BeginInvoke Anrufe gleichzeitig DispatcherPriorityausgeführt werden, werden sie in der Reihenfolge ausgeführt, in der die Anrufe vorgenommen wurden.

Wenn BeginInvoke sie auf ein Dispatcher heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft des zurückgegebenen DispatcherOperation Objekts auf Aborted"festgelegt" festgelegt.

Siehe auch

Gilt für

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

Führt den angegebenen Delegaten asynchron mit der angegebenen Priorität und dem angegebenen Argumentarray auf dem Thread aus, dem der Dispatcher zugeordnet ist.

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

Parameter

priority
DispatcherPriority

Die Priorität relativ zu den anderen ausstehenden Vorgängen in der Ereigniswarteschlange, mit der Dispatcher die angegebene Methode aufgerufen wird.

method
Delegate

Ein Delegat zu einer Methode, die mehrere Argumente erwartet und in die Dispatcher-Ereigniswarteschlange gestellt wird.

arg
Object

Das Objekt, das als Argument an die angegebene Methode übergeben wird.

args
Object[]

Ein Array von Objekten, die als Argumente an die angegebene Methode übergeben werden sollen.

Gibt zurück

DispatcherOperation

Ein Objekt, das unmittelbar nach dem Aufruf von BeginInvoke zurückgegeben wird und für die Interaktion mit dem Delegaten verwendet werden kann, während im Delegaten die Ausführung einer Aufgabe in der Dispatcher-Warteschlange steht.

Attribute

Ausnahmen

method ist null.

DispatcherPriority ist keine gültige Priorität.

Hinweise

Der arg Parameter kann sein null , wenn keine Argumente benötigt werden.

BeginInvoke gibt ein DispatcherOperation Objekt zurück, das zum Interagieren mit dem Stellvertretung verwendet werden kann, wenn sich der Stellvertretung in der Ereigniswarteschlange befindet.

Das DispatcherOperation von ihnen zurückgegebene BeginInvoke Objekt kann auf verschiedene Arten verwendet werden, um mit dem angegebenen Stellvertretung zu interagieren, z. B. folgendes:

  • Ändern des DispatcherPriority Stellvertretungsvorgangs, da die Ausführung in der Ereigniswarteschlange aussteht.

  • Entfernen der Stellvertretung aus der Ereigniswarteschlange.

  • Warten sie, bis der Stellvertretung zurückgegeben werden soll.

  • Abrufen des Werts, den der Stellvertretung nach der Ausführung zurückgibt.

BeginInvoke ist asynchron; Daher gibt das Steuerelement sofort an das aufrufende Objekt zurück, nachdem es aufgerufen wird.

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptoberflächenthread gedreht wird, den Inhalt eines Button auf dem UI-Thread erstellten Elements nicht aktualisieren. Damit der Hintergrundthread auf die Inhaltseigenschaft des ButtonInhalts zugreifen kann, muss der Hintergrundthread die Arbeit an den Dispatcher zugeordneten UI-Thread delegieren. Dies wird mithilfe von entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange des Dispatcher angegebenen DispatcherPriorityHinzugefügt.

Wenn mehrere BeginInvoke Anrufe gleichzeitig DispatcherPriorityausgeführt werden, werden sie in der Reihenfolge ausgeführt, in der die Anrufe vorgenommen wurden.

Wenn BeginInvoke sie auf ein Dispatcher heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft des zurückgegebenen DispatcherOperation Objekts auf Aborted"festgelegt" festgelegt.

Siehe auch

Gilt für