Udostępnij za pośrednictwem


Dispatcher Klasa

Definicja

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 .

Dotyczy

Zobacz też