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.Normal i wywołanie zwrotne, które jest przesyłane za pomocą wystąpienia delegata NextPrimeDelegate .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

DispatcherUtrzymuje 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 tworzony w wątku, stanie się jedynym, Dispatcher który można skojarzyć z wątkiem, nawet jeśli Dispatcher zostanie zamknięty.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 Dispatcher , a nie skojarzono z wątkiem, Dispatcher zostanie utworzony.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. DispatcherJest 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łączone, nie można go ponownie uruchomić.If a Dispatcher is shut down, it cannot be restarted.

W programie WPF dostęp do niego jest możliwy tylko w przypadku, gdy DispatcherObject Dispatcher jest skojarzony z.In WPF, 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 Interfejs użytkownikaUI wątku.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 Content właściwości Button , wątek w tle musi delegować swoją służbę do Dispatcher skojarzonej z Interfejs użytkownikaUI wątkiem.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ą albo Invoke BeginInvoke .This is accomplished by using either Invoke or BeginInvoke. Invoke jest synchroniczny i BeginInvoke jest asynchroniczny.Invoke is synchronous and BeginInvoke is asynchronous. Operacja zostanie dodana do kolejki o Dispatcher określonej wartości DispatcherPriority .The operation is added to the queue of the Dispatcher at the specified DispatcherPriority.

Jeśli BeginInvoke jest wywoływana na, Dispatcher która ma wyłączony, właściwość status zwracanej 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 Dispatcher , z wyjątkiem DisableProcessing , są wolne od wątku.All of the methods on Dispatcher, with the exception of DisableProcessing, are free-threaded.

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

Obiekty, które pochodzą z Freezable są wolne od wątku, gdy są zablokowane.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 dla aktualnie wykonywanego wątku i tworzy nową, Dispatcher Jeśli nie jest ona jeszcze skojarzona 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ńczono zamykanie.Determines whether the Dispatcher has finished shutting down.

HasShutdownStarted

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

Hooks

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

Thread

Pobiera wątek, Dispatcher z którym jest skojarzony.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, Dispatcher w którym został utworzony.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 Dispatcher został utworzony.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 Dispatcher jest skojarzony.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 Dispatcher jest skojarzony.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 i z określoną tablicą argumentów w wątku, Dispatcher z którym jest skojarzona.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 zamknięcie Dispatcher asynchroniczne.Initiates shutdown of the Dispatcher asynchronously.

CheckAccess()

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

DisableProcessing()

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

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.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żące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
Invoke(Action)

Wykonuje określony Action synchronicznie w wątku, z którym Dispatcher jest skojarzony.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, Dispatcher z którym jest skojarzony.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, Dispatcher z którym jest skojarzony.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, Dispatcher z którym jest skojarzony.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 na wątku, Dispatcher z którym jest skojarzony.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 Dispatcher jest skojarzony.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, Dispatcher z którym jest skojarzony.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, Dispatcher z którym jest skojarzony.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, Dispatcher z którym jest skojarzony.Executes the specified delegate synchronously at the specified priority on the thread that the Dispatcher is associated with.

Invoke(DispatcherPriority, Delegate, Object)

Wykonuje określony delegat o określonym priorytecie synchronicznie w wątku, Dispatcher z którym jest skojarzony.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 na wątku, Dispatcher z którym jest skojarzony.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 w wątku, Dispatcher z którym jest skojarzony.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 na wątku, Dispatcher z którym jest skojarzony.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 Dispatcher jest skojarzony.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, Dispatcher z którym jest skojarzony.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, Dispatcher z którym jest skojarzony.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, Dispatcher z którym jest skojarzony.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, Dispatcher z którym jest skojarzony.Executes the specified Action asynchronously on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority)

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

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Wykonuje określone Action asynchroniczne o określonym priorytecie w wątku, Dispatcher z którym jest skojarzony.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, Dispatcher z którym jest skojarzony.Executes the specified Func<TResult> asynchronously on the thread the Dispatcher is associated with.

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

Wykonuje określone Func<TResult> asynchroniczne o określonym priorytecie w wątku, Dispatcher z którym jest skojarzony.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ślone Func<TResult> asynchroniczne o określonym priorytecie w wątku, Dispatcher z którym jest skojarzony.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 elementu 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 reprezentujący 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łowy priorytet.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 Dispatcher zakończeniu zamykania.Occurs when the Dispatcher finishes shutting down.

ShutdownStarted

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

UnhandledException

Występuje, gdy wyjątek wątku jest zgłaszany i nieprzechwycony podczas wykonywania delegata w postaci 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 wyrzucany podczas wykonywania delegata w trybie Invoke lub na BeginInvoke 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, Dispatcher w którym został utworzony określony.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, Dispatcher w którym został utworzony określony.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 Dispatcher został utworzony określony.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, Dispatcher w którym został utworzony określony, i kończy 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, Dispatcher w którym został utworzony określony, i kończy wykonywanie po upływie określonego 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, Dispatcher w którym został utworzony określony.Executes the specified delegate synchronously with the specified priority on the thread that the specified Dispatcher was created on.

Dotyczy

Zobacz też