Dispatcher Klasa

Definicja

Zapewnia usługi do zarządzania kolejką elementów roboczych dla wątku.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
Dziedziczenie
Dispatcher

Przykłady

Poniższy przykład pokazuje, jak umieścić operację na Dispatcher.The following example shows how to place an operation onto a Dispatcher. Aby uzyskać pełny kod źródłowy tego przykładu, zapoznaj się z aplikacją Jednowątkową z długotrwałym obliczaniem.For the full source code of this example, see Single-Threaded Application with Long-Running Calculation Sample.

Najpierw utworzono delegata, który nie akceptuje żadnych argumentów.First, a delegate is created that accepts no arguments.

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

Następnie BeginInvoke(DispatcherPriority, Delegate) jest wywoływana.Next, BeginInvoke(DispatcherPriority, Delegate) is called. To wywołanie BeginInvoke(DispatcherPriority, Delegate) przyjmuje dwa parametry: priorytet, który jest ustawiony na DispatcherPriority.Normali wywołanie zwrotne, które jest przesyłane za pomocą wystąpienia NextPrimeDelegatedelegata.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))

Uwagi

Dispatcher utrzymuje priorytetową kolejkę elementów roboczych dla określonego wątku.The Dispatcher maintains a prioritized queue of work items for a specific thread.

Gdy Dispatcher jest tworzona w wątku, stanie się jedyną Dispatcher, która może być skojarzona z wątkiem, nawet jeśli Dispatcher jest wyłączona.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.

Jeśli spróbujesz uzyskać CurrentDispatcher dla bieżącego wątku, a Dispatcher nie jest skojarzona z wątkiem, zostanie utworzony Dispatcher.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. Dispatcher jest również tworzony podczas tworzenia DispatcherObject.A Dispatcher is also created when you create a DispatcherObject. Jeśli tworzysz Dispatcher w wątku w tle, pamiętaj, aby zamknąć dyspozytora przed opuszczeniem wątku.If you create a Dispatcher on a background thread, be sure to shut down the dispatcher before exiting the thread.

Jeśli Dispatcher jest wyłączona, nie można go ponownie uruchomić.If a Dispatcher is shut down, it cannot be restarted.

W WPFWPFdostęp do DispatcherObject można uzyskać tylko przez Dispatcher, z którym jest skojarzony.In WPFWPF, a DispatcherObject can only be accessed by the Dispatcher it is associated with. Na przykład wątek w tle nie może zaktualizować zawartości Button, która jest skojarzona z Dispatcherą w wątku Interfejs użytkownikaUI.For example, a background thread cannot update the contents of a Button that is associated with the Dispatcher on the Interfejs użytkownikaUI thread. Aby wątek w tle mógł uzyskać dostęp do właściwości Content Button, wątek w tle musi delegować prace do Dispatcher skojarzonej z wątkiem Interfejs użytkownikaUI.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 Interfejs użytkownikaUI thread. Jest to realizowane za pomocą Invoke lub BeginInvoke.This is accomplished by using either Invoke or BeginInvoke. Invoke jest synchroniczna i BeginInvoke jest asynchroniczny.Invoke is synchronous and BeginInvoke is asynchronous. Operacja zostanie dodana do kolejki Dispatcher w określonym DispatcherPriority.The operation is added to the queue of the Dispatcher at the specified DispatcherPriority.

Jeśli BeginInvoke jest wywoływana na Dispatcher, który ma wyłączony, właściwość status zwróconego DispatcherOperation jest ustawiona na Aborted.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

Wszystkie metody na Dispatcher, z wyjątkiem DisableProcessing, są bezpłatne wątkowo.All of the methods on Dispatcher, with the exception of DisableProcessing, are free-threaded.

Obiekty pochodne od DispatcherObject mają koligację wątku.Objects that derive from DispatcherObject have thread affinity.

Obiekty, które pochodzą z Freezable są bezpłatne wątkowo, gdy są zamrożone.Objects that derive from Freezable are free-threaded when they are frozen. Aby uzyskać więcej informacji, zobacz Freezable obiektów — Omówienie.For more information, see Freezable Objects Overview.

Właściwości

CurrentDispatcher

Pobiera Dispatcher aktualnie wykonywanego wątku i tworzy nowy Dispatcher, jeśli nie jest on jeszcze skojarzony z wątkiem.Gets the Dispatcher for the thread currently executing and creates a new Dispatcher if one is not already associated with the thread.

HasShutdownFinished

Określa, czy Dispatcher zakończył zamykanie.Determines whether the Dispatcher has finished shutting down.

HasShutdownStarted

Określa, czy Dispatcher jest zamykana.Determines whether the Dispatcher is shutting down.

Hooks

Pobiera kolekcję punktów zaczepienia, które zawierają dodatkowe informacje o zdarzeniach dotyczących Dispatcher.Gets the collection of hooks that provide additional event information about the Dispatcher.

Thread

Pobiera wątek, z którym skojarzona jest ta Dispatcher.Gets the thread this Dispatcher is associated with.

Metody

BeginInvoke(Delegate, DispatcherPriority, Object[])

Wykonuje określony delegat asynchronicznie z określonymi argumentami o określonym priorytecie w wątku, w którym został utworzony Dispatcher.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[])

Wykonuje określony delegat asynchronicznie z określonymi argumentami w wątku, w którym został utworzony Dispatcher.Executes the specified delegate asynchronously with the specified arguments on the thread that the Dispatcher was created on.

BeginInvoke(DispatcherPriority, Delegate)

Wykonuje określony delegat asynchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified delegate asynchronously at the specified priority on the thread the Dispatcher is associated with.

BeginInvoke(DispatcherPriority, Delegate, Object)

Wykonuje określony delegat asynchronicznie o określonym priorytecie i z określonym argumentem w wątku, z którym jest skojarzona Dispatcher.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[])

Wykonuje określony delegat asynchronicznie o określonym priorytecie oraz z określoną tablicą argumentów w wątku, z którym jest skojarzona Dispatcher.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)

Inicjuje zamykanie Dispatcher asynchronicznie.Initiates shutdown of the Dispatcher asynchronously.

CheckAccess()

Określa, czy wątek wywołujący jest wątkiem skojarzonym z tym Dispatcher.Determines whether the calling thread is the thread associated with this Dispatcher.

DisableProcessing()

Wyłącza przetwarzanie kolejki Dispatcher.Disables processing of the Dispatcher queue.

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
ExitAllFrames()

Żądania, które opuszczają wszystkie ramki, w tym zagnieżdżone ramki.Requests that all frames exit, including nested frames.

FromThread(Thread)

Pobiera Dispatcher dla określonego wątku.Gets the Dispatcher for the specified thread.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
Invoke(Action)

Wykonuje określony Action synchronicznie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Action synchronously on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority)

Wykonuje określony Action synchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority, CancellationToken)

Wykonuje określony Action synchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Wykonuje określony Action synchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Delegate, DispatcherPriority, Object[])

Wykonuje określony delegat o określonym priorytecie synchronicznie z określonymi argumentami w wątku, z którym jest skojarzona Dispatcher.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(Delegate, Object[])

Wykonuje określony delegat z określonymi argumentami synchronicznie w wątku, z którym jest skojarzona Dispatcher.Executes the specified delegate with the specified arguments synchronously on the thread the Dispatcher is associated with.

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

Wykonuje określony delegat w wyznaczonym przedziale czasu o określonym priorytecie z określonymi argumentami synchronicznie w wątku, z którym jest skojarzona Dispatcher.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[])

Wykonuje określony delegat w wyznaczonym przedziale czasu o określonym priorytecie z określonymi argumentami synchronicznie w wątku, z którym jest skojarzona Dispatcher.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)

Wykonuje określony delegat synchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified delegate synchronously at the specified priority on the thread on which the Dispatcher is associated with.

Invoke(DispatcherPriority, Delegate, Object)

Wykonuje określony delegat o określonym priorytecie synchronicznie względem określonego argumentu w wątku, z którym jest skojarzona Dispatcher.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[])

Wykonuje określony delegat o określonym priorytecie synchronicznie z określonymi argumentami w wątku, z którym jest skojarzona Dispatcher.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)

Wykonuje określony delegat synchronicznie o określonym priorytecie i z określoną wartością limitu czasu w wątku, który Dispatcher został utworzony.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)

Wykonuje określony delegat o określonym priorytecie synchronicznie względem określonego argumentu w wątku, z którym jest skojarzona Dispatcher.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[])

Wykonuje określony delegat o określonym priorytecie synchronicznie z określonymi argumentami w wątku, z którym jest skojarzona Dispatcher.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>)

Wykonuje określony Func<TResult> synchronicznie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Func<TResult> synchronously on the thread the Dispatcher is associated with.

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

Wykonuje określony Func<TResult> synchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

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

Wykonuje określony Func<TResult> synchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.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)

Wykonuje określony Func<TResult> synchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync(Action)

Wykonuje określony Action asynchronicznie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Action asynchronously on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority)

Wykonuje określony Action asynchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Action asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Wykonuje określony Action asynchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Action asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync<TResult>(Func<TResult>)

Wykonuje określony Func<TResult> asynchronicznie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Func<TResult> asynchronously on the thread the Dispatcher is associated with.

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

Wykonuje określony Func<TResult> asynchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Func<TResult> asynchronously at the specified priority on the thread the Dispatcher is associated with.

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

Wykonuje określony Func<TResult> asynchronicznie o określonym priorytecie w wątku, z którym jest skojarzona Dispatcher.Executes the specified Func<TResult> asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeShutdown()

Inicjuje proces zamykania Dispatcher synchronicznie.Initiates the shutdown process of the Dispatcher synchronously.

MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
PushFrame(DispatcherFrame)

Wprowadza pętlę Execute.Enters an execute loop.

Run()

Wypchnij główną ramkę wykonania do kolejki zdarzeń Dispatcher.Pushes the main execution frame on the event queue of the Dispatcher.

ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
ValidatePriority(DispatcherPriority, String)

Określa, czy określony DispatcherPriority jest prawidłowym priorytetem.Determines whether the specified DispatcherPriority is a valid priority.

VerifyAccess()

Określa, czy wątek wywołujący ma dostęp do tego Dispatcher.Determines whether the calling thread has access to this Dispatcher.

Yield()

Tworzy obiekt oczekujący, który asynchronicznie daje kontrolę z powrotem do bieżącego dyspozytora i umożliwia dyspozytorowi przetworzenie innych zdarzeń.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)

Tworzy obiekt oczekujący, który asynchronicznie daje kontrolę z powrotem do bieżącego dyspozytora i umożliwia dyspozytorowi przetworzenie innych zdarzeń.Creates an awaitable object that asynchronously yields control back to the current dispatcher and provides an opportunity for the dispatcher to process other events. Pracy, która występuje, gdy sterowanie powraca do kodu oczekującego na wynik tej metody jest zaplanowana z określonym priorytetem.The work that occurs when control returns to the code awaiting the result of this method is scheduled with the specified priority.

Zdarzenia

ShutdownFinished

Występuje po zamknięciu Dispatcher.Occurs when the Dispatcher finishes shutting down.

ShutdownStarted

Występuje po zamknięciu Dispatcher.Occurs when the Dispatcher begins to shut down.

UnhandledException

Występuje, gdy wyjątek wątku jest zgłaszany i wychwycony podczas wykonywania delegata w ramach Invoke lub BeginInvoke.Occurs when a thread exception is thrown and uncaught during execution of a delegate by way of Invoke or BeginInvoke.

UnhandledExceptionFilter

Występuje, gdy wyjątek wątku jest zgłaszany i wychwycony podczas wykonywania delegata w ramach Invoke lub BeginInvoke, gdy znajduje się na etapie filtrowania.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.

Metody rozszerzania

BeginInvoke(Dispatcher, Action)

Wykonuje określony delegat asynchronicznie z normalnym priorytetem w wątku, w którym został utworzony określony Dispatcher.Executes the specified delegate asynchronously with normal priority on the thread that the specified Dispatcher was created on.

BeginInvoke(Dispatcher, Action, DispatcherPriority)

Wykonuje określony delegat asynchronicznie z określonym priorytetem w wątku, w którym został utworzony określony Dispatcher.Executes the specified delegate asynchronously with the specified priority on the thread that the specified Dispatcher was created on.

Invoke(Dispatcher, Action)

Wykonuje określony delegat synchronicznie z normalnym priorytetem w wątku, w którym został utworzony określony Dispatcher.Executes the specified delegate synchronously with normal priority on the thread that the specified Dispatcher was created on.

Invoke(Dispatcher, Action, TimeSpan)

Wykonuje określony delegat synchronicznie w wątku, w którym został utworzony określony Dispatcher, i przerywa wykonywanie po upływie określonego limitu czasu.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)

Wykonuje określony delegat synchronicznie o określonym priorytecie w wątku, w którym została utworzona określona Dispatcher i kończy wykonywanie po upływie określonego limitu czasu.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)

Wykonuje określony delegat synchronicznie o określonym priorytecie w wątku, w którym został utworzony określony Dispatcher.Executes the specified delegate synchronously with the specified priority on the thread that the specified Dispatcher was created on.

Dotyczy

Zobacz też