Dispatcher Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Udostępnia usługi do zarządzania kolejką elementów roboczych dla wątku.
public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
- Dziedziczenie
-
Dispatcher
Przykłady
W poniższym przykładzie pokazano, jak umieścić operację na obiekcie Dispatcher. Pełny kod źródłowy tego przykładu można znaleźć w temacie Single-Threaded Application with Long-Running Calculation Sample (Aplikacja jednowątkowa z przykładem obliczeń Long-Running).
Najpierw tworzony jest delegat, który nie akceptuje żadnych argumentów.
public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()
BeginInvoke(DispatcherPriority, Delegate) Następnie zostanie wywołana nazwa . To wywołanie przyjmuje BeginInvoke(DispatcherPriority, Delegate) dwa parametry: priorytet, który jest ustawiony na DispatcherPriority.Normal, i wywołanie zwrotne, które jest przekazywane za pośrednictwem wystąpienia delegata NextPrimeDelegate
.
startStopButton.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))
Uwagi
Utrzymuje Dispatcher priorytetową kolejkę elementów roboczych dla określonego wątku.
Gdy element Dispatcher jest tworzony w wątku, staje się jedynym Dispatcher , który może być skojarzony z wątkiem, nawet jeśli Dispatcher jest zamknięty.
Jeśli spróbujesz pobrać CurrentDispatcher element dla bieżącego wątku i element Dispatcher nie jest skojarzony z wątkiem, Dispatcher zostanie utworzony element . Obiekt Dispatcher jest również tworzony podczas tworzenia elementu DispatcherObject. Jeśli tworzysz Dispatcher element w wątku w tle, pamiętaj o zamknięciu dyspozytora przed wyjściem z wątku.
Jeśli element Dispatcher zostanie zamknięty, nie można go ponownie uruchomić.
W WPF DispatcherObject dostęp do elementu można uzyskać tylko za pomocą skojarzonego Dispatcher z nim elementu . Na przykład wątek w tle nie może zaktualizować zawartości elementu Button skojarzonego z Dispatcher wątkiem interfejsu użytkownika. Aby wątek w tle uzyskiwał dostęp do Content właściwości Button, wątek w tle musi delegować pracę do Dispatcher skojarzonego z wątkiem interfejsu użytkownika. Jest to realizowane przy użyciu polecenia Invoke lub BeginInvoke. Invoke jest synchroniczna i BeginInvoke jest asynchroniczna. Operacja jest dodawana do kolejki obiektu Dispatcher w określonym DispatcherPriorityobiekcie .
Jeśli BeginInvoke parametr jest wywoływany w obiekcie, który Dispatcher został zamknięty, właściwość status zwróconego DispatcherOperation obiektu jest ustawiona na wartość Aborted.
Wszystkie metody w systemie Dispatcher, z wyjątkiem DisableProcessing, są bezwątkowy.
Obiekty pochodzące z DispatcherObject koligacji wątku.
Obiekty pochodzące z Freezable nich są bezwątkowy, gdy są zamrożone. Aby uzyskać więcej informacji, zobacz Omówienie obiektów z możliwością zamrażania.
Właściwości
CurrentDispatcher |
Pobiera element Dispatcher dla aktualnie wykonywanego wątku i tworzy nowy Dispatcher , jeśli nie jest jeszcze skojarzony z wątkiem. |
HasShutdownFinished |
Określa, czy Dispatcher zakończono zamykanie. |
HasShutdownStarted |
Określa, czy Dispatcher jest zamykane. |
Hooks |
Pobiera kolekcję punktów zaczepienia, które zawierają dodatkowe informacje o zdarzeniu o obiekcie Dispatcher. |
Thread |
Pobiera wątek, Dispatcher z który jest skojarzony. |
Metody
BeginInvoke(Delegate, DispatcherPriority, Object[]) |
Wykonuje określony delegat asynchronicznie z określonymi argumentami z określonym priorytetem w wątku, w ramach którego Dispatcher utworzono element . |
BeginInvoke(Delegate, Object[]) |
Wykonuje określony delegat asynchronicznie z określonymi argumentami w wątku Dispatcher , na który został utworzony. |
BeginInvoke(DispatcherPriority, Delegate) |
Wykonuje określony delegat asynchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
BeginInvoke(DispatcherPriority, Delegate, Object) |
Wykonuje określony delegat asynchronicznie z określonym priorytetem i z określonym argumentem w wątku Dispatcher jest skojarzony. |
BeginInvoke(DispatcherPriority, Delegate, Object, Object[]) |
Wykonuje określony delegat asynchronicznie na określonym priorytetycie i z określoną tablicą argumentów w wątku Dispatcher , z jakim jest skojarzony. |
BeginInvokeShutdown(DispatcherPriority) |
Inicjuje Dispatcher zamknięcie asynchroniczne. |
CheckAccess() |
Określa, czy wątek wywołujący jest wątkiem skojarzonym z tym Dispatcherelementem . |
DisableProcessing() |
Wyłącza przetwarzanie Dispatcher kolejki. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
ExitAllFrames() |
Żąda zakończenia wszystkich ramek, w tym ramek zagnieżdżonych. |
FromThread(Thread) |
Pobiera element Dispatcher dla określonego wątku. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
Invoke(Action) |
Wykonuje określony Action synchronicznie w wątku, z który Dispatcher jest skojarzony. |
Invoke(Action, DispatcherPriority) |
Wykonuje określony Action synchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
Invoke(Action, DispatcherPriority, CancellationToken) |
Wykonuje określony Action synchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan) |
Wykonuje określony Action synchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
Invoke(Delegate, DispatcherPriority, Object[]) |
Wykonuje określony delegat z określonym priorytetem z określonymi argumentami synchronicznie w wątku, z który Dispatcher jest skojarzony. |
Invoke(Delegate, Object[]) |
Wykonuje określony delegat z określonymi argumentami synchronicznie w wątku, z który Dispatcher jest skojarzony. |
Invoke(Delegate, TimeSpan, DispatcherPriority, Object[]) |
Wykonuje określonego delegata w wyznaczonym przedziale czasu w określonym priorytetycie z określonymi argumentami synchronicznie w wątku Dispatcher , z który jest skojarzony. |
Invoke(Delegate, TimeSpan, Object[]) |
Wykonuje określonego delegata w wyznaczonym przedziale czasu w określonym priorytetycie z określonymi argumentami synchronicznie w wątku Dispatcher , z który jest skojarzony. |
Invoke(DispatcherPriority, Delegate) |
Wykonuje określony delegat synchronicznie z określonym priorytetem w wątku Dispatcher , z który jest skojarzony. |
Invoke(DispatcherPriority, Delegate, Object) |
Wykonuje określonego delegata z określonym priorytetem z określonym argumentem synchronicznie w wątku, z który Dispatcher jest skojarzony. |
Invoke(DispatcherPriority, Delegate, Object, Object[]) |
Wykonuje określony delegat z określonym priorytetem z określonymi argumentami synchronicznie w wątku, z który Dispatcher jest skojarzony. |
Invoke(DispatcherPriority, TimeSpan, Delegate) |
Wykonuje określony delegat synchronicznie z określonym priorytetem i z określoną wartością limitu czasu dla wątku, który Dispatcher został utworzony. |
Invoke(DispatcherPriority, TimeSpan, Delegate, Object) |
Wykonuje określonego delegata z określonym priorytetem z określonym argumentem synchronicznie w wątku, z który Dispatcher jest skojarzony. |
Invoke(DispatcherPriority, TimeSpan, Delegate, Object, Object[]) |
Wykonuje określony delegat z określonym priorytetem z określonymi argumentami synchronicznie w wątku, z który Dispatcher jest skojarzony. |
Invoke<TResult>(Func<TResult>) |
Wykonuje określony Func<TResult> synchronicznie w wątku, z który Dispatcher jest skojarzony. |
Invoke<TResult>(Func<TResult>, DispatcherPriority) |
Wykonuje określony Func<TResult> synchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken) |
Wykonuje określony Func<TResult> synchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken, TimeSpan) |
Wykonuje określony Func<TResult> synchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
InvokeAsync(Action) |
Wykonuje określony Action asynchronicznie wątek, z który Dispatcher jest skojarzony. |
InvokeAsync(Action, DispatcherPriority) |
Wykonuje określony Action asynchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
InvokeAsync(Action, DispatcherPriority, CancellationToken) |
Wykonuje określony Action asynchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
InvokeAsync<TResult>(Func<TResult>) |
Wykonuje określony Func<TResult> asynchronicznie wątek, z który Dispatcher jest skojarzony. |
InvokeAsync<TResult>(Func<TResult>, DispatcherPriority) |
Wykonuje określony Func<TResult> asynchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
InvokeAsync<TResult>(Func<TResult>, DispatcherPriority, CancellationToken) |
Wykonuje określony Func<TResult> asynchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony. |
InvokeShutdown() |
Inicjuje proces zamykania Dispatcher synchronicznego. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
PushFrame(DispatcherFrame) |
Wprowadza pętlę wykonywania. |
Run() |
Wypycha główną ramkę wykonywania w kolejce zdarzeń obiektu Dispatcher. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
ValidatePriority(DispatcherPriority, String) |
Określa, czy określony DispatcherPriority jest prawidłowy priorytet. |
VerifyAccess() |
Określa, czy wątek wywołujący ma dostęp do tego Dispatcherelementu . |
Yield() |
Tworzy oczekiwany obiekt, który asynchronicznie daje kontrolę z powrotem do bieżącego dyspozytora i umożliwia dyspozytorowi przetwarzanie innych zdarzeń. |
Yield(DispatcherPriority) |
Tworzy oczekiwany obiekt, który asynchronicznie daje kontrolę z powrotem do bieżącego dyspozytora i umożliwia dyspozytorowi przetwarzanie innych zdarzeń. Praca wykonywana po powrocie kontrolki do kodu oczekującego na wynik tej metody jest zaplanowana z określonym priorytetem. |
Zdarzenia
ShutdownFinished |
Występuje po zakończeniu Dispatcher zamykania. |
ShutdownStarted |
Występuje, gdy Dispatcher rozpoczyna się zamykanie. |
UnhandledException |
Występuje, gdy wyjątek wątku jest zgłaszany i nieuchwycony podczas wykonywania delegata Invoke za pomocą metody lub BeginInvoke. |
UnhandledExceptionFilter |
Występuje, gdy wyjątek wątku jest zgłaszany i nieuchwycony podczas wykonywania delegata Invoke za pomocą metody lub BeginInvoke w fazie filtrowania. |
Metody rozszerzania
BeginInvoke(Dispatcher, Action) |
Wykonuje określony delegat asynchronicznie z normalnym priorytetem w wątku, na który został utworzony określony Dispatcher . |
BeginInvoke(Dispatcher, Action, DispatcherPriority) |
Wykonuje określonego delegata asynchronicznie z określonym priorytetem w wątku, na który został utworzony określony Dispatcher . |
Invoke(Dispatcher, Action) |
Wykonuje określony delegat synchronicznie z normalnym priorytetem w wątku, na który został utworzony określony Dispatcher . |
Invoke(Dispatcher, Action, TimeSpan) |
Wykonuje określony delegat synchronicznie w wątku, na który został utworzony określony Dispatcher , i zatrzymuje wykonywanie po określonym przedziale czasu. |
Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority) |
Wykonuje określony delegat synchronicznie z określonym priorytetem w wątku, na który został utworzony określony Dispatcher , i zatrzymuje wykonywanie po określonym przedziale czasu. |
Invoke(Dispatcher, Action, DispatcherPriority) |
Wykonuje określony delegat synchronicznie z określonym priorytetem w wątku, na który został utworzony określony Dispatcher . |