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 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
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
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 startStopButton
Wert 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
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
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 tomorrowsWeather
Wert 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 weather
namens , 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
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.