Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Класс Dispatcher

 

Опубликовано: Октябрь 2016

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

Пространство имен:   System.Windows.Threading
Сборка:  WindowsBase (в WindowsBase.dll)

System.Object
  System.Windows.Threading.Dispatcher

public sealed class Dispatcher

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

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

System_CAPS_pubpropertyHasShutdownFinished

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

System_CAPS_pubpropertyHasShutdownStarted

Определяет, является ли Dispatcher завершающим работу.

System_CAPS_pubpropertyHooks

Получает коллекцию обработчиков, которые предоставляют дополнительную информацию о Dispatcher.

System_CAPS_pubpropertyThread

Получает поток, с которым этот Dispatcher связан.

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

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

System_CAPS_pubmethodBeginInvoke(Delegate, Object[])

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

System_CAPS_pubmethodBeginInvoke(DispatcherPriority, Delegate)

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

System_CAPS_pubmethodBeginInvoke(DispatcherPriority, Delegate, Object)

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

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

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

System_CAPS_pubmethodBeginInvokeShutdown(DispatcherPriority)

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

System_CAPS_pubmethodCheckAccess()

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

System_CAPS_pubmethodDisableProcessing()

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

System_CAPS_pubmethodEquals(Object)

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

System_CAPS_pubmethodSystem_CAPS_staticExitAllFrames()

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

System_CAPS_pubmethodSystem_CAPS_staticFromThread(Thread)

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

System_CAPS_pubmethodGetHashCode()

Служит хэш-функцией по умолчанию.(Наследуется от Object.)

System_CAPS_pubmethodGetType()

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

System_CAPS_pubmethodInvoke(Action)

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

System_CAPS_pubmethodInvoke(Action, DispatcherPriority)

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

System_CAPS_pubmethodInvoke(Action, DispatcherPriority, CancellationToken)

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

System_CAPS_pubmethodInvoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

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

System_CAPS_pubmethodInvoke(Delegate, DispatcherPriority, Object[])

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

System_CAPS_pubmethodInvoke(Delegate, Object[])

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

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

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

System_CAPS_pubmethodInvoke(Delegate, TimeSpan, Object[])

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

System_CAPS_pubmethodInvoke(DispatcherPriority, Delegate)

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

System_CAPS_pubmethodInvoke(DispatcherPriority, Delegate, Object)

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

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

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

System_CAPS_pubmethodInvoke(DispatcherPriority, TimeSpan, Delegate)

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

System_CAPS_pubmethodInvoke(DispatcherPriority, TimeSpan, Delegate, Object)

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

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

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

System_CAPS_pubmethodInvoke<TResult>(Func<TResult>)

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

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

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

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

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

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

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

System_CAPS_pubmethodInvokeAsync(Action)

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

System_CAPS_pubmethodInvokeAsync(Action, DispatcherPriority)

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

System_CAPS_pubmethodInvokeAsync(Action, DispatcherPriority, CancellationToken)

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

System_CAPS_pubmethodInvokeAsync<TResult>(Func<TResult>)

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

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

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

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

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

System_CAPS_pubmethodInvokeShutdown()

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

System_CAPS_pubmethodSystem_CAPS_staticPushFrame(DispatcherFrame)

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

System_CAPS_pubmethodSystem_CAPS_staticRun()

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

System_CAPS_pubmethodToString()

Возвращает строковое представление текущего объекта.
(Наследуется от Object.)

System_CAPS_pubmethodSystem_CAPS_staticValidatePriority(DispatcherPriority, String)

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

System_CAPS_pubmethodVerifyAccess()

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

System_CAPS_pubmethodSystem_CAPS_staticYield()

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

System_CAPS_pubmethodSystem_CAPS_staticYield(DispatcherPriority)

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

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

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

System_CAPS_pubeventShutdownStarted

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

System_CAPS_pubeventUnhandledException

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

System_CAPS_pubeventUnhandledExceptionFilter

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

ИмяОписание
System_CAPS_pubmethodBeginInvoke(Action)

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

System_CAPS_pubmethodBeginInvoke(Action, DispatcherPriority)

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

System_CAPS_pubmethodInvoke(Action, TimeSpan)

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

System_CAPS_pubmethodInvoke(Action, TimeSpan, DispatcherPriority)

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

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

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

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

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

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

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

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

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

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

Следующий пример показывает, как поместить операцию для выполнения в объект Dispatcher. Полный исходный код этого примера, в разделе Single-Threaded Application with Long-Running Calculation Sample.

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

public delegate void NextPrimeDelegate();

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

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

.NET Framework
Доступно с 3.0
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.0

Любые открытые статические элементы ( Предоставлен общий доступ в Visual Basic) этого типа являются потокобезопасными. Потокобезопасность элементов экземпляров не гарантируется.

Вернуться в начало
Показ: