Dispatcher.BeginInvoke Methode

Definition

Führt einen Delegat asynchron auf dem Thread aus, dem der Dispatcher zugeordnet ist.

Überlädt

Name Beschreibung
BeginInvoke(Delegate, Object[])

Führt den angegebenen Delegat asynchron mit den angegebenen Argumenten im Thread aus, für den die Dispatcher Stellvertretung erstellt wurde.

BeginInvoke(DispatcherPriority, Delegate)

Führt den angegebenen Delegat asynchron mit der angegebenen Priorität im Thread aus, der Dispatcher zugeordnet ist.

BeginInvoke(Delegate, DispatcherPriority, Object[])

Führt den angegebenen Delegat asynchron mit den angegebenen Argumenten an der angegebenen Priorität auf dem Thread aus, auf dem der Dispatcher Thread erstellt wurde.

BeginInvoke(DispatcherPriority, Delegate, Object)

Führt den angegebenen Delegat asynchron an der angegebenen Priorität und mit dem angegebenen Argument im Thread aus, dem die Dispatcher Zuweisung erfolgt.

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

Führt den angegebenen Delegaten asynchron an der angegebenen Priorität und mit dem angegebenen Array von Argumenten im Thread aus, dem die Dispatcher Zeichenfolge zugeordnet ist.

Hinweise

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, auf dieses Objekt zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptthread der Benutzeroberfläche abgeleitet wird, den Inhalt eines Button im 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. Dazu wird entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange der Dispatcher angegebenen DispatcherPriorityHinzugefügt.

BeginInvoke ist asynchron; Aus diesem Grund wird das Steuerelement sofort an das aufrufende Objekt zurückgegeben, nachdem es aufgerufen wurde.

BeginInvoke gibt ein DispatcherOperation Objekt zurück, das verwendet werden kann, um mit dem Delegaten zu interagieren, wenn sich der Delegate in der Ereigniswarteschlange befindet.

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

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

  • Entfernen des Delegaten aus der Ereigniswarteschlange.

  • Warten, bis die Stellvertretung zurückkehrt.

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

Wenn mehrere BeginInvoke Anrufe gleichzeitig DispatcherPrioritygetätigt werden, werden sie in der Reihenfolge ausgeführt, in der die Anrufe getätigt wurden.

Wenn für ein heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft der zurückgegebenen Eigenschaft auf <a0/> festgelegt.

BeginInvoke(Delegate, Object[])

Führt den angegebenen Delegat asynchron mit den angegebenen Argumenten im Thread aus, für den die Dispatcher Stellvertretung 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 an eine Methode, die Parameter verwendet, die in argsder Dispatcher Ereigniswarteschlange angegeben sind.

args
Object[]

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

Gibt zurück

Ein Objekt, das unmittelbar danach BeginInvoke zurückgegeben wird, kann verwendet werden, um mit dem Delegat zu interagieren, da die Ausführung in der Ereigniswarteschlange aussteht.

Hinweise

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

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

  • Entfernen des Delegaten aus der Ereigniswarteschlange.

  • Warten, bis die Stellvertretung zurückkehrt.

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

BeginInvoke ist asynchron; Aus diesem Grund wird das Steuerelement sofort an das aufrufende Objekt zurückgegeben, nachdem es aufgerufen wurde.

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, auf dieses Objekt zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptthread der Benutzeroberfläche abgeleitet wird, den Inhalt eines Button im 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. Dazu wird entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange der Dispatcher angegebenen DispatcherPriorityHinzugefügt.

Wenn für ein heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft der zurückgegebenen Eigenschaft auf <a0/> festgelegt.

Gilt für:

BeginInvoke(DispatcherPriority, Delegate)

Führt den angegebenen Delegat asynchron mit der angegebenen Priorität im Thread aus, 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 Dispatcher Ereigniswarteschlange, mit der die angegebene Methode aufgerufen wird.

method
Delegate

Der Delegat an eine Methode, die keine Argumente akzeptiert, die in die Dispatcher Ereigniswarteschlange verschoben werden.

Gibt zurück

Ein Objekt, das unmittelbar danach BeginInvoke zurückgegeben wird, kann verwendet werden, um mit dem Delegat zu interagieren, da die Ausführung in der Ereigniswarteschlange aussteht.

Attribute

Ausnahmen

method ist null.

priority ist keine gültige DispatcherPriority.

Beispiele

Das folgende Beispiel zeigt, wie ein Vorgang auf einem Dispatcher. 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, die die Eigenschaft zurückgibt, die Dispatcher sie zugeordnet ist, wird die gewünschte Dispatcher durch Abfragen des DispatcherObject, in diesem Fall ein benannter ButtonstartStopButtonWert abgerufen. Der Aufruf verwendet BeginInvoke(DispatcherPriority, Delegate) zwei Parameter: die Priorität, auf die festgelegt DispatcherPriority.Normalist, und den Rückruf, der über eine Instanz des Delegaten 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 DispatcherPrioritygetätigt werden, werden sie in der Reihenfolge ausgeführt, in der die Anrufe getätigt wurden.

BeginInvoke gibt ein DispatcherOperation Objekt zurück, das verwendet werden kann, um mit dem Delegaten zu interagieren, wenn sich der Delegate in der Ereigniswarteschlange befindet.

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

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

  • Entfernen des Delegaten aus der Ereigniswarteschlange.

  • Warten, bis die Stellvertretung zurückkehrt.

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

BeginInvoke ist asynchron; Aus diesem Grund wird das Steuerelement sofort an das aufrufende Objekt zurückgegeben, nachdem es aufgerufen wurde.

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, auf dieses Objekt zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptthread der Benutzeroberfläche abgeleitet wird, den Inhalt eines Button im 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. Dazu wird entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange der Dispatcher angegebenen DispatcherPriorityHinzugefügt.

Wenn für ein heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft der zurückgegebenen Eigenschaft auf <a0/> festgelegt.

Weitere Informationen

Gilt für:

BeginInvoke(Delegate, DispatcherPriority, Object[])

Führt den angegebenen Delegat asynchron mit den angegebenen Argumenten an der angegebenen Priorität auf dem Thread aus, auf dem der Dispatcher Thread 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 an eine Methode, die Parameter verwendet, die in argsder Dispatcher Ereigniswarteschlange angegeben sind.

priority
DispatcherPriority

Die Priorität relativ zu den anderen ausstehenden Vorgängen in der Dispatcher Ereigniswarteschlange, mit der 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

Ein Objekt, das unmittelbar danach BeginInvoke zurückgegeben wird, kann verwendet werden, um mit dem Delegat zu interagieren, da die Ausführung in der Ereigniswarteschlange aussteht.

Hinweise

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

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

  • Entfernen des Delegaten aus der Ereigniswarteschlange.

  • Warten, bis die Stellvertretung zurückkehrt.

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

BeginInvoke ist asynchron; Aus diesem Grund wird das Steuerelement sofort an das aufrufende Objekt zurückgegeben, nachdem es aufgerufen wurde.

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, auf dieses Objekt zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptthread der Benutzeroberfläche abgeleitet wird, den Inhalt eines Button im 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. Dazu wird entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange der Dispatcher angegebenen DispatcherPriorityHinzugefügt.

Wenn für ein heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft der zurückgegebenen Eigenschaft auf <a0/> festgelegt.

Gilt für:

BeginInvoke(DispatcherPriority, Delegate, Object)

Führt den angegebenen Delegat asynchron an der angegebenen Priorität und mit dem angegebenen Argument im Thread aus, dem die Dispatcher Zuweisung erfolgt.

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 Dispatcher Ereigniswarteschlange, mit der die angegebene Methode aufgerufen wird.

method
Delegate

Ein Delegat an eine Methode, die ein Argument verwendet, das in die Dispatcher Ereigniswarteschlange verschoben wird.

arg
Object

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

Gibt zurück

Ein Objekt, das unmittelbar danach BeginInvoke zurückgegeben wird, kann verwendet werden, um mit dem Delegat zu interagieren, da die Ausführung in der Ereigniswarteschlange aussteht.

Attribute

Ausnahmen

method ist null.

priority ist keine gültige DispatcherPriority.

Beispiele

Das folgende Beispiel zeigt, wie ein Vorgang auf einem Dispatcher.

Zunächst wird ein Delegat 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, die die Eigenschaft zurückgibt, die Dispatcher sie zugeordnet ist, wird die gewünschte Dispatcher durch Abfragen des DispatcherObject, in diesem Fall ein benannter GridtomorrowsWeatherWert abgerufen. Der Aufruf verwendet BeginInvoke(DispatcherPriority, Delegate, Object) drei Parameter: die Priorität, die auf ; den Rückruf, DispatcherPriority.Normalder über eine Instanz des Delegaten OneArgDelegateübergeben wird ; und eine Zeichenfolge mit dem Namen weather, 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 erforderlich sind.

BeginInvoke gibt ein DispatcherOperation Objekt zurück, das verwendet werden kann, um mit dem Delegaten zu interagieren, wenn sich der Delegate in der Ereigniswarteschlange befindet.

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

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

  • Entfernen des Delegaten aus der Ereigniswarteschlange.

  • Warten, bis die Stellvertretung zurückkehrt.

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

BeginInvoke ist asynchron; Aus diesem Grund wird das Steuerelement sofort an das aufrufende Objekt zurückgegeben, nachdem es aufgerufen wurde.

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, auf dieses Objekt zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptthread der Benutzeroberfläche abgeleitet wird, den Inhalt eines Button im UI-Thread erstellten Elements nicht aktualisieren. Damit der Hintergrundthread auf die Inhaltseigenschaft des ButtonHintergrundthreads zugreifen kann, muss der Hintergrundthread die Arbeit an den Dispatcher zugeordneten UI-Thread delegieren. Dazu wird entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange der Dispatcher angegebenen DispatcherPriorityHinzugefügt.

Wenn mehrere BeginInvoke Anrufe gleichzeitig DispatcherPrioritygetätigt werden, werden sie in der Reihenfolge ausgeführt, in der die Anrufe getätigt wurden.

Wenn für ein heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft der zurückgegebenen Eigenschaft auf <a0/> festgelegt.

Weitere Informationen

Gilt für:

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

Führt den angegebenen Delegaten asynchron an der angegebenen Priorität und mit dem angegebenen Array von Argumenten im Thread aus, dem die Dispatcher Zeichenfolge 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 Dispatcher Ereigniswarteschlange, mit der die angegebene Methode aufgerufen wird.

method
Delegate

Ein Delegat an eine Methode, die mehrere Argumente verwendet, die in die Dispatcher Ereigniswarteschlange verschoben werden.

arg
Object

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

args
Object[]

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

Gibt zurück

Ein Objekt, das unmittelbar nach BeginInvoke dem Aufruf zurückgegeben wird, kann verwendet werden, um mit dem Delegaten zu interagieren, da die Ausführung in der Dispatcher Warteschlange aussteht.

Attribute

Ausnahmen

method ist null.

DispatcherPriority ist keine gültige Priorität.

Hinweise

Der arg Parameter kann sein null , wenn keine Argumente erforderlich sind.

BeginInvoke gibt ein DispatcherOperation Objekt zurück, das verwendet werden kann, um mit dem Delegaten zu interagieren, wenn sich der Delegate in der Ereigniswarteschlange befindet.

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

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

  • Entfernen des Delegaten aus der Ereigniswarteschlange.

  • Warten, bis die Stellvertretung zurückkehrt.

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

BeginInvoke ist asynchron; Aus diesem Grund wird das Steuerelement sofort an das aufrufende Objekt zurückgegeben, nachdem es aufgerufen wurde.

In WPF kann nur der Thread, der ein DispatcherObject Objekt erstellt hat, auf dieses Objekt zugreifen. Beispielsweise kann ein Hintergrundthread, der aus dem Hauptthread der Benutzeroberfläche abgeleitet wird, den Inhalt eines Button im 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. Dazu wird entweder Invoke oder BeginInvoke. Invoke ist synchron und BeginInvoke ist asynchron. Der Vorgang wird der Ereigniswarteschlange der Dispatcher angegebenen DispatcherPriorityHinzugefügt.

Wenn mehrere BeginInvoke Anrufe gleichzeitig DispatcherPrioritygetätigt werden, werden sie in der Reihenfolge ausgeführt, in der die Anrufe getätigt wurden.

Wenn für ein heruntergefahrenes Objekt aufgerufen wird, wird die Statuseigenschaft der zurückgegebenen Eigenschaft auf <a0/> festgelegt.

Weitere Informationen

Gilt für: