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 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. Dieser Aufruf BeginInvoke(DispatcherPriority, Delegate) verwendet zwei Parameter: die Priorität, die auf "" festgelegt DispatcherPriority.Normalist, und den Rückruf, der in einer Instanz des Stellvertretungs NextPrimeDelegateübergeben wird.

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

Hinweise

Die Dispatcher verwaltet eine priorisierte Warteschlange von Arbeitselementen für einen bestimmten Thread.

Wenn eine Dispatcher Datei auf einem Thread erstellt wird, wird es nur Dispatcher das einzige, das dem Thread zugeordnet werden kann, auch wenn dies Dispatcher heruntergefahren wird.

Wenn Sie versuchen, den CurrentDispatcher aktuellen Thread abzurufen, und eine nicht dem Thread zugeordnet ist, wird eine Dispatcher Dispatcher erstellt. Eine Dispatcher wird auch erstellt, wenn Sie eine DispatcherObject. Wenn Sie einen Dispatcher Hintergrundthread erstellen, müssen Sie den Dispatcher herunterfahren, bevor Sie den Thread beenden.

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

In WPF DispatcherObject kann nur auf die zugehörigen Elemente Dispatcher zugegriffen werden. Ein Hintergrundthread kann z. B. den Inhalt eines Button Hintergrundthreads nicht aktualisieren, das dem Dispatcher Ui-Thread zugeordnet ist. Damit der Hintergrundthread auf die Content Eigenschaft des ButtonHintergrundthreads 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 Warteschlange 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.

Alle Methoden Dispatcherfür , mit Ausnahme DisableProcessingvon , sind freithreaded.

Objekte, die von DispatcherObject Threadaffinität abgeleitet werden.

Objekte, von denen aus Freezable abgeleitet wird, werden freithreaded, wenn sie eingefroren 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 Stellvertretung synchron an der angegebenen Priorität im Thread aus, mit dem die Dispatcher angegebene Stellvertretung verknüpft 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