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 завершения работы, свойству Abortedсостояния возвращаемого DispatcherOperation значения присваивается значение .
Все методы в 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. |