Dispatcher Klasse

Definition

Stellt Dienste zum Verwalten der Warteschlange von Arbeitselementen für einen Thread bereit.

public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
Vererbung
Dispatcher

Beispiele

Im folgenden Beispiel wird gezeigt, wie ein -Vorgang auf einem -Vorgang platzieren Dispatcher kann. Den vollständigen Quellcode dieses Beispiels finden Sie unter Singlethreadanwendung mit Long-Running Berechnungsbeispiel.

Zunächst wird ein Delegat erstellt, der keine Argumente akzeptiert.

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

Als Nächstes BeginInvoke(DispatcherPriority, Delegate) wird aufgerufen. Dieser Aufruf von BeginInvoke(DispatcherPriority, Delegate) nimmt zwei Parameter an: die Priorität, die auf festgelegt DispatcherPriority.Normal ist, und den Rückruf, der über eine Instanz des Delegaten übergeben NextPrimeDelegate wird.

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

Hinweise

Dispatcherverwaltet eine priorisierte Warteschlange von Arbeitselementen für einen bestimmten Thread.

Wenn eine Dispatcher in einem Thread erstellt wird, ist sie die einzige, die dem Thread zugeordnet werden Dispatcher kann, auch wenn Dispatcher heruntergefahren wird.

Wenn Sie versuchen, den CurrentDispatcher für den aktuellen Thread abzurufen, und dem Dispatcher Thread kein zugeordnet ist, wird ein Dispatcher erstellt. Ein Dispatcher wird auch erstellt, wenn Sie eine DispatcherObject erstellen. Wenn Sie einen Dispatcher in einem Hintergrundthread erstellen, müssen Sie den Verteiler herunterfahren, bevor Sie den Thread beenden.

Wenn ein Dispatcher heruntergefahren wird, kann er nicht neu gestartet werden.

In WPF kann nur von der zugegriffen DispatcherObject werden, der Dispatcher er zugeordnet ist. Beispielsweise kann ein Hintergrundthread den Inhalt einer nicht Button aktualisieren, die dem Dispatcher im UI-Thread zugeordnet ist. Damit der Hintergrundthread auf die -Eigenschaft von zugreifen Content Button kann, muss der Hintergrundthread die Arbeit an den delegieren, Dispatcher der dem UI-Thread zugeordnet ist. Dies wird mithilfe von Invoke oder BeginInvoke erreicht. Invoke ist synchron und BeginInvoke asynchron. Der Vorgang wird der Warteschlange von Dispatcher am angegebenen DispatcherPriority hinzugefügt.

Wenn BeginInvoke für eine aufgerufen Dispatcher wird, die heruntergefahren wurde, wird die Statuseigenschaft der DispatcherOperation zurückgegebenen auf Aborted festgelegt.

Alle Methoden in Dispatcher sind mit Ausnahme von DisableProcessing free-threaded.

Objekte, die von abgeleitet DispatcherObject werden, verfügen über Threadaffinität.

Objekte, die von abgeleitet Freezable werden, werden freigethreadt, wenn sie fixiert sind. Weitere Informationen finden Sie unter der Übersicht über Freezable-Objekte.

Eigenschaften

CurrentDispatcher

Ruft den Dispatcher für den derzeit ausgeführten Thread ab bzw. erstellt einen neuen, wenn dem Thread noch kein Dispatcher zugeordnet ist.

HasShutdownFinished

Bestimmt, ob der Dispatcher die Beendigung abgeschlossen hat.

HasShutdownStarted

Bestimmt, ob der Dispatcher gerade beendet wird.

Hooks

Ruft die Auflistung von Hooks ab, die zusätzliche Ereignisinformationen zum Dispatcher bereitstellen.

Thread

Ruft den Thread ab, dem dieser Dispatcher zugeordnet ist.

Methoden

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(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(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.

BeginInvokeShutdown(DispatcherPriority)

Initiiert ein asynchrones Beenden des Dispatcher.

CheckAccess()

Bestimmt, ob der aufrufende Thread diesem Dispatcher zugeordnet ist.

DisableProcessing()

Deaktiviert Verarbeitung der Dispatcher-Warteschlange.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
ExitAllFrames()

Anforderung zum Beenden aller Frames einschließlich geschachtelter Frames.

FromThread(Thread)

Ruft den Dispatcher für den angegebenen Thread ab.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
Invoke(Action)

Führt die angegebene Action synchron auf dem Thread aus, dem der Dispatcher zugeordnet ist.

Invoke(Action, DispatcherPriority)

Führt die angegebene Action synchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

Invoke(Action, DispatcherPriority, CancellationToken)

Führt die angegebene Action synchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Führt die angegebene Action synchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

Invoke(Delegate, DispatcherPriority, Object[])

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

Invoke(Delegate, Object[])

Führt den angegebenen Delegaten synchron mit den angegebenen Argumenten für den Thread aus, dem der Dispatcher zugeordnet ist.

Invoke(Delegate, TimeSpan, DispatcherPriority, Object[])

Führt den angegebenen Delegaten in der angegebenen Zeitspanne mit der angegebenen Priorität und den angegebenen Argumenten synchron für den Thread aus, dem der Dispatcher zugeordnet ist.

Invoke(Delegate, TimeSpan, Object[])

Führt den angegebenen Delegaten in der angegebenen Zeitspanne mit der angegebenen Priorität und den angegebenen Argumenten synchron für den Thread aus, dem der Dispatcher zugeordnet ist.

Invoke(DispatcherPriority, Delegate)

Führt den angegebenen Delegaten synchron mit der angegebenen Priorität für den Thread aus, Dispatcher dem der zugeordnet ist.

Invoke(DispatcherPriority, Delegate, Object)

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

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

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

Invoke(DispatcherPriority, TimeSpan, Delegate)

Führt den angegebenen Delegaten synchron mit der angegebenen Priorität und dem angegebenen Timeoutwert auf dem Thread aus, in dem der Dispatcher erstellt wurde.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

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

Invoke(DispatcherPriority, TimeSpan, Delegate, Object, Object[])

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

Invoke<TResult>(Func<TResult>)

Führt die angegebene Func<TResult> synchron auf dem Thread aus, dem der Dispatcher zugeordnet ist.

Invoke<TResult>(Func<TResult>, DispatcherPriority)

Führt die angegebene Func<TResult> synchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)

Führt die angegebene Func<TResult> synchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken, TimeSpan)

Führt die angegebene Func<TResult> synchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

InvokeAsync(Action)

Führt die angegebene Action asynchron auf dem Thread aus, dem der Dispatcher zugeordnet ist.

InvokeAsync(Action, DispatcherPriority)

Führt die angegebene Action asynchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Führt die angegebene Action asynchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

InvokeAsync<TResult>(Func<TResult>)

Führt die angegebene Func<TResult> asynchron auf dem Thread aus, dem der Dispatcher zugeordnet ist.

InvokeAsync<TResult>(Func<TResult>, DispatcherPriority)

Führt die angegebene Func<TResult> asynchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

InvokeAsync<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)

Führt die angegebene Func<TResult> asynchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.

InvokeShutdown()

Initiiert die synchrone Beendigung des Dispatcher.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
PushFrame(DispatcherFrame)

Tritt in eine Ausführungsschleife ein.

Run()

Stellt den Hauptausführungsframe in die Ereigniswarteschlange von Dispatcher.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
ValidatePriority(DispatcherPriority, String)

Ermittelt, ob die angegebene DispatcherPriority eine gültige Priorität ist.

VerifyAccess()

Bestimmt, ob der aufrufende Thread auf dieses Dispatcher zugreifen kann.

Yield()

Erstellt ein Awaitable-Objekt, welches ansynchron das Steuerelement an den aktuellen Verteiler zurückgibt und dem Verteiler die Gelegenheit gibt, andere Ereignisse zu verarbeiten.

Yield(DispatcherPriority)

Erstellt ein Awaitable-Objekt, welches ansynchron das Steuerelement an den aktuellen Verteiler zurückgibt und dem Verteiler die Gelegenheit gibt, andere Ereignisse zu verarbeiten. Die Arbeit, welche auftritt, wenn das Steuerelement an den Code zurückgibt, der auf das Ergebnis dieser Methode wartet, die mit der angegebenen Priorität geplant wurde.

Ereignisse

ShutdownFinished

Tritt ein, wenn der Dispatcher die Beendigung abschließt.

ShutdownStarted

Tritt ein, wenn der Dispatcher die Beendigung beginnt.

UnhandledException

Tritt ein, wenn eine Threadausnahme ausgelöst und während der Ausführung eines Delegaten mit Invoke oder BeginInvoke nicht abgefangen wird.

UnhandledExceptionFilter

Tritt ein, wenn eine Threadausnahme ausgelöst und nicht abgefangen wird, während ein Delegat mit Invoke oder BeginInvoke ausgeführt wird und sich in der Filterstufe befindet.

Erweiterungsmethoden

BeginInvoke(Dispatcher, Action)

Führt den angegebenen Delegaten asynchron mit der normalen Priorität für den Thread aus, in dem der angegebene Dispatcher erstellt wurde.

BeginInvoke(Dispatcher, Action, DispatcherPriority)

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

Invoke(Dispatcher, Action)

Führt den angegebenen Delegaten synchron mit der normalen Priorität für den Thread aus, in dem der angegebene Dispatcher erstellt wurde.

Invoke(Dispatcher, Action, TimeSpan)

Führt den angegebenen Delegaten synchron für den Thread aus, in dem der angegebene Dispatcher erstellt wurde, und beendet die Ausführung nach Ablauf des angegebenen Timeouts.

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

Führt den angegebenen Delegaten synchron und mit der angegebenen Priorität für den Thread aus, in dem der angegebene Dispatcher erstellt wurde, und beendet die Ausführung nach Ablauf des angegebenen Timeouts.

Invoke(Dispatcher, Action, DispatcherPriority)

Führt den angegebenen Delegaten synchron mit der angegebenen Priorität für den Thread aus, in dem der angegebene Dispatcher erstellt wurde.

Gilt für

Siehe auch