Dispatcher Класс

Определение

Предоставляет службы для управления очередью рабочих элементов для потока.

public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
Наследование
Dispatcher

Примеры

В следующем примере показано, как поместить операцию в Dispatcher . Полный исходный код этого примера см. в разделе Пример однопотокового приложения с Long-Runningным вычислением.

Во-первых, создается делегат, который не принимает аргументы.

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

Затем BeginInvoke(DispatcherPriority, Delegate) вызывается метод. Этот вызов BeginInvoke(DispatcherPriority, Delegate) принимает два параметра: приоритет, который имеет значение DispatcherPriority.Normal , и обратный вызов, который передается через экземпляр делегата NextPrimeDelegate .

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

Комментарии

DispatcherПоддерживает приоритетную очередь рабочих элементов для конкретного потока.

Когда объект создается Dispatcher в потоке, он становится единственным Dispatcher , который может быть связан с потоком, даже если работа завершается Dispatcher .

Если попытаться получить CurrentDispatcher для текущего потока, а Dispatcher не связать с потоком, Dispatcher будет создан объект. А Dispatcher также создается при создании DispatcherObject . При создании в Dispatcher фоновом потоке обязательно завершите работу диспетчера перед выходом из потока.

Если работа выключена Dispatcher , ее невозможно перезапустить.

В WPF доступ к DispatcherObject может осуществляться только тем, что Dispatcher он связан с. Например, фоновый поток не может обновить содержимое объекта Button , связанного с параметром Dispatcher в ПОТОКЕ пользовательского интерфейса. Чтобы фоновый поток мог получить доступ к Content свойству Button , фоновый поток должен делегировать работу, Dispatcher связанную с потоком пользовательского интерфейса. Это достигается с помощью Invoke или BeginInvoke . Invoke является синхронным и BeginInvoke является асинхронным. Операция добавляется в очередь в Dispatcher указанной DispatcherPriority .

Если BeginInvoke метод вызывается для объекта Dispatcher , который завершил работу, свойство Status возвращаемого значения DispatcherOperation устанавливается в значение Aborted .

Все методы в Dispatcher , за исключением DisableProcessing , являются свободными потоками.

Объекты, производные от, DispatcherObject имеют сходство потоков.

Объекты, производные от Freezable , являются свободными потоками, когда они заморожены. Дополнительные сведения см. в разделе Общие сведения об объектах класса Freezable.

Свойства

CurrentDispatcher

Возвращает Dispatcher для выполняющегося в данный момент потока и создает новый объект Dispatcher, если с потоком еще не связан диспетчер.

HasShutdownFinished

Определяет, завершил ли объект Dispatcher процесс остановки.

HasShutdownStarted

Определяет, находится ли объект Dispatcher в процессе остановки.

Hooks

Возвращает коллекцию ловушек, предоставляющих дополнительную информацию о Dispatcher.

Thread

Возвращает поток, с которым связан данный Dispatcher.

Методы

BeginInvoke(Delegate, DispatcherPriority, Object[])

Выполняет указанный делегат асинхронно, с заданными приоритетом и аргументами, в потоке, в котором был создан объект Dispatcher.

BeginInvoke(Delegate, Object[])

Выполняет указанный делегат асинхронно с указанными аргументами в потоке, в котором был создан объект Dispatcher.

BeginInvoke(DispatcherPriority, Delegate)

Выполняет указанный делегат асинхронно, с заданным приоритетом, в потоке, с которым связан Dispatcher.

BeginInvoke(DispatcherPriority, Delegate, Object)

Выполняет указанный делегат асинхронно, с заданными приоритетом и аргументом, в потоке, с которым связан Dispatcher.

BeginInvoke(DispatcherPriority, Delegate, Object, Object[])

Выполняет указанный делегат асинхронно, с заданными приоритетом и массивом аргументов, в потоке, с которым связан Dispatcher.

BeginInvokeShutdown(DispatcherPriority)

Инициализирует асинхронную остановку Dispatcher.

CheckAccess()

Определяет, связан ли вызывающий поток с данным Dispatcher.

DisableProcessing()

Отменяет обработку очереди Dispatcher.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
ExitAllFrames()

Запрашивает выход для всех фреймов, включая вложенные.

FromThread(Thread)

Возвращает Dispatcher для заданного потока.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
Invoke(Action)

Выполняет заданный объект Action синхронно в потоке, с которым связан Dispatcher.

Invoke(Action, DispatcherPriority)

Выполняет указанный объект Action синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.

Invoke(Action, DispatcherPriority, CancellationToken)

Выполняет указанный объект Action синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.

Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Выполняет указанный объект Action синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.

Invoke(Delegate, DispatcherPriority, Object[])

Выполняет указанный делегат синхронно, с заданными приоритетом и аргументами, в потоке, с которым связан Dispatcher.

Invoke(Delegate, Object[])

Выполняет указанный делегат синхронно с заданными аргументами в потоке, с которым связан объект Dispatcher.

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

Выполняет указанный делегат в течение заданного промежутка времени, синхронно, с заданными приоритетом и аргументами, в потоке, с которым связан Dispatcher.

Invoke(Delegate, TimeSpan, Object[])

Выполняет указанный делегат в течение заданного промежутка времени, синхронно, с заданными приоритетом и аргументами, в потоке, с которым связан Dispatcher.

Invoke(DispatcherPriority, Delegate)

Выполняет указанный делегат в синхронном режиме по заданному приоритету в потоке, Dispatcher с которым связан объект.

Invoke(DispatcherPriority, Delegate, Object)

Выполняет указанный делегат синхронно, с заданными приоритетом и аргументом, в потоке, с которым связан Dispatcher.

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

Выполняет указанный делегат синхронно, с заданными приоритетом и аргументами, в потоке, с которым связан Dispatcher.

Invoke(DispatcherPriority, TimeSpan, Delegate)

Выполняет указанный делегат асинхронно, с заданными приоритетом и значением таймаута, в потоке, в котором был создан объект Dispatcher.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

Выполняет указанный делегат синхронно, с заданными приоритетом и аргументом, в потоке, с которым связан Dispatcher.

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

Выполняет указанный делегат синхронно, с заданными приоритетом и аргументами, в потоке, с которым связан Dispatcher.

Invoke<TResult>(Func<TResult>)

Выполняет заданный объект Func<TResult> синхронно в потоке, с которым связан Dispatcher.

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

Выполняет указанный объект Func<TResult> синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.

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

Выполняет указанный объект Func<TResult> синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.

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

Выполняет указанный объект Func<TResult> синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.

InvokeAsync(Action)

Выполняет заданный объект Action асинхронно в потоке, с которым связан Dispatcher.

InvokeAsync(Action, DispatcherPriority)

Выполняет указанный объект Action асинхронно с заданным приоритетом в потоке, с которым связан Dispatcher.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Выполняет указанный объект Action асинхронно с заданным приоритетом в потоке, с которым связан Dispatcher.

InvokeAsync<TResult>(Func<TResult>)

Выполняет заданный объект Func<TResult> асинхронно в потоке, с которым связан Dispatcher.

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

Выполняет указанный объект Func<TResult> асинхронно с заданным приоритетом в потоке, с которым связан Dispatcher.

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

Выполняет указанный объект Func<TResult> асинхронно с заданным приоритетом в потоке, с которым связан Dispatcher.

InvokeShutdown()

Инициирует синхронный процесс остановки Dispatcher.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
PushFrame(DispatcherFrame)

Входит в цикл выполнения.

Run()

Помещает главный фрейм выполнения в очередь событий Dispatcher.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
ValidatePriority(DispatcherPriority, String)

Определяет, является ли DispatcherPriority допустимым приоритетом.

VerifyAccess()

Определяет, имеет ли вызывающий поток доступ к этому Dispatcher.

Yield()

Создает объект типа awaitable, который асинхронно направляет элемент управления обратно текущему диспетчеру и предоставляет диспетчеру возможность обработки других событий.

Yield(DispatcherPriority)

Создает объект типа awaitable, который асинхронно направляет элемент управления обратно текущему диспетчеру и предоставляет диспетчеру возможность обработки других событий. Работа, происходящая, когда элемент управления возвращается к коду, ожидающему результата этого метода, запланирован с указанным приоритетом.

События

ShutdownFinished

Происходит после остановки Dispatcher.

ShutdownStarted

Происходит, когда начинается процесс остановки Dispatcher.

UnhandledException

Происходит, когда выбрасывается и никаким кодом не перехватывается исключение потока при выполнении делегата с помощью Invoke или BeginInvoke.

UnhandledExceptionFilter

Происходит, когда выбрасывается и никаким кодом не перехватывается исключение потока при выполнении делегата с помощью Invoke или BeginInvoke на стадии фильтра.

Методы расширения

BeginInvoke(Dispatcher, Action)

Выполняет указанный делегат асинхронно с обычным приоритетом, в потоке, в котором был создан заданный объект Dispatcher.

BeginInvoke(Dispatcher, Action, DispatcherPriority)

Выполняет указанный делегат асинхронно с заданным приоритетом, в потоке, в котором был создан заданный объект Dispatcher.

Invoke(Dispatcher, Action)

Выполняет указанный делегат синхронно с обычным приоритетом, в потоке, в котором был создан заданный объект Dispatcher.

Invoke(Dispatcher, Action, TimeSpan)

Выполняет указанный делегат синхронно, в потоке, в котором был создан объект Dispatcher, и прекращает выполнение по истечении указанного времени ожидания.

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

Выполняет указанный делегат синхронно, с заданным приоритетом, в потоке, в котором был создан объект Dispatcher, и прекращает выполнение по истечении указанного времени ожидания.

Invoke(Dispatcher, Action, DispatcherPriority)

Выполняет указанный делегат синхронно с заданным приоритетом, в потоке, в котором был создан заданный объект Dispatcher.

Применяется к

См. также раздел