Dispatcher.BeginInvoke Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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
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
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
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
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