Поделиться через


Dispatcher Класс

Определение

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

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

Примеры

В следующем примере показано, как поместить операцию в объект Dispatcher. Полный исходный код этого примера см. в разделе Single-Threaded Application с примером вычислений 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 . При создании также создается A DispatcherDispatcherObject. Если вы создаете Dispatcher фоновый поток, не забудьте завершить работу диспетчера перед выходом из потока.

Dispatcher Если выполняется завершение работы, его невозможно перезапустить.

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

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

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

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

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

Свойства

Имя Описание
CurrentDispatcher

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

HasShutdownFinished

Определяет, завершено ли Dispatcher завершение работы.

HasShutdownStarted

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

Hooks

Возвращает коллекцию перехватчиков, которые предоставляют дополнительные сведения о событии Dispatcher.

Thread

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

Методы

Имя Описание
BeginInvoke(Delegate, DispatcherPriority, Object[])

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

BeginInvoke(Delegate, Object[])

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

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

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

BeginInvoke(DispatcherPriority, Delegate, Object)

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

BeginInvoke(DispatcherPriority, Delegate)

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

BeginInvokeShutdown(DispatcherPriority)

Инициирует завершение Dispatcher работы асинхронно.

CheckAccess()

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

DisableProcessing()

Отключает обработку Dispatcher очереди.

Equals(Object)

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

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

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

FromThread(Thread)

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

GetHashCode()

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

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

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

(Унаследовано от Object)
Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

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

Invoke(Action, DispatcherPriority, CancellationToken)

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

Invoke(Action, DispatcherPriority)

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

Invoke(Action)

Выполняет указанный 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, Object, Object[])

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

Invoke(DispatcherPriority, Delegate, Object)

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

Invoke(DispatcherPriority, Delegate)

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

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

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

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

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

Invoke(DispatcherPriority, TimeSpan, Delegate)

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

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

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

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

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

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

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

Invoke<TResult>(Func<TResult>)

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

InvokeAsync(Action, DispatcherPriority, CancellationToken)

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

InvokeAsync(Action, DispatcherPriority)

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

InvokeAsync(Action)

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

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

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

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

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

InvokeAsync<TResult>(Func<TResult>)

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

InvokeShutdown()

Инициирует процесс Dispatcher завершения работы синхронно.

MemberwiseClone()

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

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

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

Run()

Отправляет основной кадр выполнения в очередь Dispatcherсобытий.

ToString()

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

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

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

VerifyAccess()

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

Yield()

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

Yield(DispatcherPriority)

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

События

Имя Описание
ShutdownFinished

Происходит при Dispatcher завершении завершения работы.

ShutdownStarted

Происходит, когда Dispatcher начинается завершение работы.

UnhandledException

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

UnhandledExceptionFilter

Возникает, когда исключение потока создается и не перехватывается во время выполнения делегата путем Invoke или BeginInvoke при выполнении на этапе фильтра.

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

Имя Описание
BeginInvoke(Dispatcher, Action, DispatcherPriority)

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

BeginInvoke(Dispatcher, Action)

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

Invoke(Dispatcher, Action, DispatcherPriority)

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

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

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

Invoke(Dispatcher, Action, TimeSpan)

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

Invoke(Dispatcher, Action)

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

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

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