Dispatcher Klasse

Definition

Stellt Dienste zum Verwalten der Warteschlange von Arbeitselementen für einen Thread bereit.Provides services for managing the queue of work items for a thread.

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 Sie einen Vorgang auf Dispatchereinem platzieren.The following example shows how to place an operation onto a Dispatcher. Den vollständigen Quellcode dieses Beispiels finden Sie unter Beispiel für Single Thread-Anwendung mit langer Berechnung.For the full source code of this example, see Single-Threaded Application with Long-Running Calculation Sample.

Zuerst wird ein Delegat erstellt, der keine Argumente akzeptiert.First, a delegate is created that accepts no arguments.

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

BeginInvoke(DispatcherPriority, Delegate) Anschließend wird aufgerufen.Next, BeginInvoke(DispatcherPriority, Delegate) is called. Dieser Aufruf von BeginInvoke(DispatcherPriority, Delegate) erfordert zwei Parameter: die Priorität, die auf DispatcherPriority.Normalfestgelegt ist, und der Rückruf, der durch NextPrimeDelegateeine Instanz des Delegaten übermittelt wird.This call to BeginInvoke(DispatcherPriority, Delegate) takes two parameters: the priority, which is set to DispatcherPriority.Normal, and the callback, which is passed in through an instance of the delegate NextPrimeDelegate.

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

Hinweise

Dispatcher Verwaltet eine priorisierte Warteschlange von Arbeitsaufgaben für einen bestimmten Thread.The Dispatcher maintains a prioritized queue of work items for a specific thread.

Wenn ein Dispatcher in einem Thread erstellt wird, wird es zum einzigen Dispatcher , das dem Thread zugeordnet werden kann, auch wenn der Dispatcher heruntergefahren wird.When a Dispatcher is created on a thread, it becomes the only Dispatcher that can be associated with the thread, even if the Dispatcher is shut down.

Wenn Sie versuchen, die CurrentDispatcher für den aktuellen Thread zu erhalten, und ein Dispatcher nicht mit dem Thread verknüpft ist Dispatcher , wird ein erstellt.If you attempt to get the CurrentDispatcher for the current thread and a Dispatcher is not associated with the thread, a Dispatcher will be created. Eine Dispatcher wird auch erstellt, wenn Sie einen DispatcherObjecterstellen.A Dispatcher is also created when you create a DispatcherObject. Wenn Sie ein Dispatcher in einem Hintergrund Thread erstellen, müssen Sie den Verteiler beenden, bevor Sie den Thread beenden.If you create a Dispatcher on a background thread, be sure to shut down the dispatcher before exiting the thread.

Wenn ein Dispatcher heruntergefahren wird, kann es nicht neu gestartet werden.If a Dispatcher is shut down, it cannot be restarted.

In WPFWPF DispatcherObject kann nur von dem darauf zugegriffen werden, Dispatcher dem es zugeordnet ist.In WPFWPF, a DispatcherObject can only be accessed by the Dispatcher it is associated with. Ein Hintergrund Thread kann z. b. den Inhalt einer Button nicht aktualisieren, die mit dem Dispatcher im UIUI Thread verknüpft ist.For example, a background thread cannot update the contents of a Button that is associated with the Dispatcher on the UIUI thread. Damit der Hintergrund Content Thread auf die-Eigenschaft Buttonvon zugreifen kann, muss der Hintergrund Thread die Arbeit UIUI an die Dispatcher dem Thread zugeordnete delegieren.In order for the background thread to access the Content property of the Button, the background thread must delegate the work to the Dispatcher associated with the UIUI thread. Dies wird mithilfe Invoke von oder BeginInvokeerreicht.This is accomplished by using either Invoke or BeginInvoke. Invokeist synchron und BeginInvoke ist asynchron.Invoke is synchronous and BeginInvoke is asynchronous. Der-Vorgang wird der-Warteschlange von Dispatcher am angegebenen DispatcherPriorityhinzugefügt.The operation is added to the queue of the Dispatcher at the specified DispatcherPriority.

Wenn BeginInvoke für einen Dispatcher aufgerufen wird, der heruntergefahren wurde, wird die Status-Eigenschaft DispatcherOperation des zurückgegebenen Abortedauf festgelegt.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

Alle Methoden in Dispatcher, mit Ausnahme von DisableProcessing, sind frei Thread.All of the methods on Dispatcher, with the exception of DisableProcessing, are free-threaded.

Objekte, die von DispatcherObject abgeleitet werden, haben Thread Affinität.Objects that derive from DispatcherObject have thread affinity.

Objekte, die von Freezable abgeleitet werden, sind frei Thread, wenn Sie eingefroren werden.Objects that derive from Freezable are free-threaded when they are frozen. Weitere Informationen finden Sie unter der Übersicht über Freezable-Objekte.For more information, see Freezable Objects Overview.

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.Gets the Dispatcher for the thread currently executing and creates a new Dispatcher if one is not already associated with the thread.

HasShutdownFinished

Bestimmt, ob der Dispatcher die Beendigung abgeschlossen hat.Determines whether the Dispatcher has finished shutting down.

HasShutdownStarted

Bestimmt, ob der Dispatcher gerade beendet wird.Determines whether the Dispatcher is shutting down.

Hooks

Ruft die Auflistung von Hooks ab, die zusätzliche Ereignisinformationen zum Dispatcher bereitstellen.Gets the collection of hooks that provide additional event information about the Dispatcher.

Thread

Ruft den Thread ab, dem dieser Dispatcher zugeordnet ist.Gets the thread this Dispatcher is associated with.

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.Executes the specified delegate asynchronously with the specified arguments, at the specified priority, on the thread that the Dispatcher was created on.

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.Executes the specified delegate asynchronously with the specified arguments on the thread that the Dispatcher was created on.

BeginInvoke(DispatcherPriority, Delegate)

Führt den angegebenen Delegaten asynchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified delegate asynchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified delegate asynchronously at the specified priority and with the specified argument on the thread the Dispatcher is associated with.

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.Executes the specified delegate asynchronously at the specified priority and with the specified array of arguments on the thread the Dispatcher is associated with.

BeginInvokeShutdown(DispatcherPriority)

Initiiert ein asynchrones Beenden des Dispatcher.Initiates shutdown of the Dispatcher asynchronously.

CheckAccess()

Bestimmt, ob der aufrufende Thread diesem Dispatcher zugeordnet ist.Determines whether the calling thread is the thread associated with this Dispatcher.

DisableProcessing()

Deaktiviert Verarbeitung der Dispatcher-Warteschlange.Disables processing of the Dispatcher queue.

Equals(Object)

Ermittelt, ob das angegebene Objekt und das aktuelle Objekt gleich sind.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
ExitAllFrames()

Anforderung zum Beenden aller Frames einschließlich geschachtelter Frames.Requests that all frames exit, including nested frames.

FromThread(Thread)

Ruft den Dispatcher für den angegebenen Thread ab.Gets the Dispatcher for the specified thread.

GetHashCode()

Dient als die Standard-HashfunktionServes as the default hash function.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
Invoke(Action)

Führt die angegebene Action synchron auf dem Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified Action synchronously on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority)

Führt die angegebene Action synchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority, CancellationToken)

Führt die angegebene Action synchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(Delegate, Object[])

Führt den angegebenen Delegaten synchron mit den angegebenen Argumenten für den Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified delegate with the specified arguments synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate within the designated time span at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate within the designated time span at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(DispatcherPriority, Delegate)

Führt den angegebenen Delegaten synchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified delegate synchronously at the specified priority on the thread on which the Dispatcher is associated with.

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.Executes the specified delegate at the specified priority with the specified argument synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate synchronously at the specified priority and with the specified time-out value on the thread the Dispatcher was created.

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.Executes the specified delegate at the specified priority with the specified argument synchronously on the thread the Dispatcher is associated with.

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.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke<TResult>(Func<TResult>)

Führt die angegebene Func<TResult> synchron auf dem Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified Func<TResult> synchronously on the thread the Dispatcher is associated with.

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.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync(Action)

Führt die angegebene Action asynchron auf dem Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified Action asynchronously on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority)

Führt die angegebene Action asynchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified Action asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Führt die angegebene Action asynchron mit der angegebenen Priorität auf dem Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified Action asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync<TResult>(Func<TResult>)

Führt die angegebene Func<TResult> asynchron auf dem Thread aus, dem der Dispatcher zugeordnet ist.Executes the specified Func<TResult> asynchronously on the thread the Dispatcher is associated with.

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.Executes the specified Func<TResult> asynchronously at the specified priority on the thread the Dispatcher is associated with.

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.Executes the specified Func<TResult> asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeShutdown()

Initiiert die synchrone Beendigung des Dispatcher.Initiates the shutdown process of the Dispatcher synchronously.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
PushFrame(DispatcherFrame)

Tritt in eine Ausführungsschleife ein.Enters an execute loop.

Run()

Stellt den Hauptausführungsframe in die Ereigniswarteschlange von Dispatcher.Pushes the main execution frame on the event queue of the Dispatcher.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)
ValidatePriority(DispatcherPriority, String)

Ermittelt, ob die angegebene DispatcherPriority eine gültige Priorität ist.Determines whether the specified DispatcherPriority is a valid priority.

VerifyAccess()

Bestimmt, ob der aufrufende Thread auf dieses Dispatcher zugreifen kann.Determines whether the calling thread has access to this Dispatcher.

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.Creates an awaitable object that asynchronously yields control back to the current dispatcher and provides an opportunity for the dispatcher to process other events.

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.Creates an awaitable object that asynchronously yields control back to the current dispatcher and provides an opportunity for the dispatcher to process other events. 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.The work that occurs when control returns to the code awaiting the result of this method is scheduled with the specified priority.

Ereignisse

ShutdownFinished

Tritt ein, wenn der Dispatcher die Beendigung abschließt.Occurs when the Dispatcher finishes shutting down.

ShutdownStarted

Tritt ein, wenn der Dispatcher die Beendigung beginnt.Occurs when the Dispatcher begins to shut down.

UnhandledException

Tritt ein, wenn eine Threadausnahme ausgelöst und während der Ausführung eines Delegaten mit Invoke oder BeginInvoke nicht abgefangen wird.Occurs when a thread exception is thrown and uncaught during execution of a delegate by way of Invoke or BeginInvoke.

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.Occurs when a thread exception is thrown and uncaught during execution of a delegate by way of Invoke or BeginInvoke when in the filter stage.

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.Executes the specified delegate asynchronously with normal priority on the thread that the specified Dispatcher was created on.

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.Executes the specified delegate asynchronously with the specified priority on the thread that the specified Dispatcher was created on.

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.Executes the specified delegate synchronously with normal priority on the thread that the specified Dispatcher was created on.

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.Executes the specified delegate synchronously on the thread that the specified Dispatcher was created on, and stops execution after the specified time-out period.

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.Executes the specified delegate synchronously with the specified priority on the thread that the specified Dispatcher was created on, and stops execution after the specified time-out period.

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.Executes the specified delegate synchronously with the specified priority on the thread that the specified Dispatcher was created on.

Gilt für:

Siehe auch