Dispatcher Класс

Определение

Предоставляет службы для управления очередью рабочих элементов для потока.Provides services for managing the queue of work items for a thread.

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

Примеры

В следующем примере показано, как поместить операцию в Dispatcher.The following example shows how to place an operation onto a Dispatcher. Полный исходный код этого примера см. в разделе Пример однопотокового приложения с длительным выполнением вычислений.For the full source code of this example, see Single-Threaded Application with Long-Running Calculation Sample.

Во-первых, создается делегат, который не принимает аргументы.First, a delegate is created that accepts no arguments.

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

BeginInvoke(DispatcherPriority, Delegate) Затем вызывается метод.Next, BeginInvoke(DispatcherPriority, Delegate) is called. Этот вызов BeginInvoke(DispatcherPriority, Delegate) принимает два параметра: приоритет, который имеет DispatcherPriority.Normalзначение, и обратный вызов, который передается через экземпляр делегата NextPrimeDelegate.This call to BeginInvoke(DispatcherPriority, Delegate) takes two parameters: the priority, which is set to DispatcherPriority.Normal, and the callback, which is passed in through an instance of the delegate NextPrimeDelegate.

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

Комментарии

Dispatcher Поддерживает приоритетную очередь рабочих элементов для конкретного потока.The Dispatcher maintains a prioritized queue of work items for a specific thread.

Когда объект Dispatcher создается в потоке, он становится единственным Dispatcher , который может быть связан с Dispatcher потоком, даже если работа завершается.When a Dispatcher is created on a thread, it becomes the only Dispatcher that can be associated with the thread, even if the Dispatcher is shut down.

Если попытаться получить CurrentDispatcher для текущего потока, Dispatcher а не связать с потоком, будет создан объект Dispatcher .If you attempt to get the CurrentDispatcher for the current thread and a Dispatcher is not associated with the thread, a Dispatcher will be created. А Dispatcher также создается при DispatcherObjectсоздании.A Dispatcher is also created when you create a DispatcherObject. При создании Dispatcher в фоновом потоке обязательно завершите работу диспетчера перед выходом из потока.If you create a Dispatcher on a background thread, be sure to shut down the dispatcher before exiting the thread.

Dispatcher Если работа выключена, ее невозможно перезапустить.If a Dispatcher is shut down, it cannot be restarted.

В WPFWPFдоступк Dispatcher может получить только тот объект, который связан с. DispatcherObjectIn WPFWPF, a DispatcherObject can only be accessed by the Dispatcher it is associated with. Например, фоновый поток не может обновить содержимое Button объекта, связанного с объектом Dispatcher ИПUI в потоке.For example, a background thread cannot update the contents of a Button that is associated with the Dispatcher on the ИПUI thread. Content Чтобы фоновый поток мог получить доступ к свойству Button, фоновый поток должен Dispatcher делегировать работу связанному с ИПUI ним потоку.In order for the background thread to access the Content property of the Button, the background thread must delegate the work to the Dispatcher associated with the ИПUI thread. Это достигается с помощью Invoke или. BeginInvokeThis is accomplished by using either Invoke or BeginInvoke. Invokeявляется синхронным BeginInvoke и является асинхронным.Invoke is synchronous and BeginInvoke is asynchronous. Операция добавляется в очередь Dispatcher в указанной. DispatcherPriorityThe operation is added to the queue of the Dispatcher at the specified DispatcherPriority.

Если BeginInvoke метод вызывается для Dispatcher объекта, который завершил работу, свойство Status возвращаемого DispatcherOperation значения устанавливается в Abortedзначение.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

Все методы в Dispatcher, за DisableProcessingисключением, являются свободными потоками.All of the methods on Dispatcher, with the exception of DisableProcessing, are free-threaded.

Объекты, производные от DispatcherObject , имеют сходство потоков.Objects that derive from DispatcherObject have thread affinity.

Объекты, производные от Freezable , являются свободными потоками, когда они заморожены.Objects that derive from Freezable are free-threaded when they are frozen. Дополнительные сведения см. в разделе Общие сведения об объектах класса Freezable.For more information, see Freezable Objects Overview.

Свойства

CurrentDispatcher

Возвращает Dispatcher для выполняющегося в данный момент потока и создает новый объект Dispatcher, если с потоком еще не связан диспетчер.Gets the Dispatcher for the thread currently executing and creates a new Dispatcher if one is not already associated with the thread.

HasShutdownFinished

Определяет, завершил ли объект Dispatcher процесс остановки.Determines whether the Dispatcher has finished shutting down.

HasShutdownStarted

Определяет, находится ли объект Dispatcher в процессе остановки.Determines whether the Dispatcher is shutting down.

Hooks

Возвращает коллекцию ловушек, предоставляющих дополнительную информацию о Dispatcher.Gets the collection of hooks that provide additional event information about the Dispatcher.

Thread

Возвращает поток, с которым связан данный Dispatcher.Gets the thread this Dispatcher is associated with.

Методы

BeginInvoke(Delegate, DispatcherPriority, Object[])

Выполняет указанный делегат асинхронно, с заданными приоритетом и аргументами, в потоке, в котором был создан объект Dispatcher.Executes the specified delegate asynchronously with the specified arguments, at the specified priority, on the thread that the Dispatcher was created on.

BeginInvoke(Delegate, Object[])

Выполняет указанный делегат асинхронно с указанными аргументами в потоке, в котором был создан объект Dispatcher.Executes the specified delegate asynchronously with the specified arguments on the thread that the Dispatcher was created on.

BeginInvoke(DispatcherPriority, Delegate)

Выполняет указанный делегат асинхронно, с заданным приоритетом, в потоке, с которым связан Dispatcher.Executes the specified delegate asynchronously at the specified priority on the thread the Dispatcher is associated with.

BeginInvoke(DispatcherPriority, Delegate, Object)

Выполняет указанный делегат асинхронно, с заданными приоритетом и аргументом, в потоке, с которым связан Dispatcher.Executes the specified delegate asynchronously at the specified priority and with the specified argument on the thread the Dispatcher is associated with.

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

Выполняет указанный делегат асинхронно, с заданными приоритетом и массивом аргументов, в потоке, с которым связан Dispatcher.Executes the specified delegate asynchronously at the specified priority and with the specified array of arguments on the thread the Dispatcher is associated with.

BeginInvokeShutdown(DispatcherPriority)

Инициализирует асинхронную остановку Dispatcher.Initiates shutdown of the Dispatcher asynchronously.

CheckAccess()

Определяет, связан ли вызывающий поток с данным Dispatcher.Determines whether the calling thread is the thread associated with this Dispatcher.

DisableProcessing()

Отменяет обработку очереди Dispatcher.Disables processing of the Dispatcher queue.

Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

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

Запрашивает выход для всех фреймов, включая вложенные.Requests that all frames exit, including nested frames.

FromThread(Thread)

Возвращает Dispatcher для заданного потока.Gets the Dispatcher for the specified thread.

GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

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

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

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

Выполняет заданный объект Action синхронно в потоке, с которым связан Dispatcher.Executes the specified Action synchronously on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority)

Выполняет указанный объект Action синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority, CancellationToken)

Выполняет указанный объект Action синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Выполняет указанный объект Action синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Delegate, DispatcherPriority, Object[])

Выполняет указанный делегат синхронно, с заданными приоритетом и аргументами, в потоке, с которым связан Dispatcher.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(Delegate, Object[])

Выполняет указанный делегат синхронно с заданными аргументами в потоке, с которым связан объект Dispatcher.Executes the specified delegate with the specified arguments synchronously on the thread the Dispatcher is associated with.

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

Выполняет указанный делегат в течение заданного промежутка времени, синхронно, с заданными приоритетом и аргументами, в потоке, с которым связан Dispatcher.Executes the specified delegate within the designated time span at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(Delegate, TimeSpan, Object[])

Выполняет указанный делегат в течение заданного промежутка времени, синхронно, с заданными приоритетом и аргументами, в потоке, с которым связан Dispatcher.Executes the specified delegate within the designated time span at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(DispatcherPriority, Delegate)

Выполняет указанный делегат синхронно, с заданным приоритетом, в потоке, с которым связан Dispatcher.Executes the specified delegate synchronously at the specified priority on the thread on which the Dispatcher is associated with.

Invoke(DispatcherPriority, Delegate, Object)

Выполняет указанный делегат синхронно, с заданными приоритетом и аргументом, в потоке, с которым связан Dispatcher.Executes the specified delegate at the specified priority with the specified argument synchronously on the thread the Dispatcher is associated with.

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

Выполняет указанный делегат синхронно, с заданными приоритетом и аргументами, в потоке, с которым связан Dispatcher.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(DispatcherPriority, TimeSpan, Delegate)

Выполняет указанный делегат асинхронно, с заданными приоритетом и значением таймаута, в потоке, в котором был создан объект Dispatcher.Executes the specified delegate synchronously at the specified priority and with the specified time-out value on the thread the Dispatcher was created.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

Выполняет указанный делегат синхронно, с заданными приоритетом и аргументом, в потоке, с которым связан Dispatcher.Executes the specified delegate at the specified priority with the specified argument synchronously on the thread the Dispatcher is associated with.

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

Выполняет указанный делегат синхронно, с заданными приоритетом и аргументами, в потоке, с которым связан Dispatcher.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke<TResult>(Func<TResult>)

Выполняет заданный объект Func<TResult> синхронно в потоке, с которым связан Dispatcher.Executes the specified Func<TResult> synchronously on the thread the Dispatcher is associated with.

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

Выполняет указанный объект Func<TResult> синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

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

Выполняет указанный объект Func<TResult> синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

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

Выполняет указанный объект Func<TResult> синхронно с заданным приоритетом в потоке, с которым связан Dispatcher.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync(Action)

Выполняет заданный объект Action асинхронно в потоке, с которым связан Dispatcher.Executes the specified Action asynchronously on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority)

Выполняет указанный объект Action асинхронно с заданным приоритетом в потоке, с которым связан Dispatcher.Executes the specified Action asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Выполняет указанный объект Action асинхронно с заданным приоритетом в потоке, с которым связан Dispatcher.Executes the specified Action asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync<TResult>(Func<TResult>)

Выполняет заданный объект Func<TResult> асинхронно в потоке, с которым связан Dispatcher.Executes the specified Func<TResult> asynchronously on the thread the Dispatcher is associated with.

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

Выполняет указанный объект Func<TResult> асинхронно с заданным приоритетом в потоке, с которым связан Dispatcher.Executes the specified Func<TResult> asynchronously at the specified priority on the thread the Dispatcher is associated with.

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

Выполняет указанный объект Func<TResult> асинхронно с заданным приоритетом в потоке, с которым связан Dispatcher.Executes the specified Func<TResult> asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeShutdown()

Инициирует синхронный процесс остановки Dispatcher.Initiates the shutdown process of the Dispatcher synchronously.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

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

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

Run()

Помещает главный фрейм выполнения в очередь событий Dispatcher.Pushes the main execution frame on the event queue of the Dispatcher.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

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

Определяет, является ли DispatcherPriority допустимым приоритетом.Determines whether the specified DispatcherPriority is a valid priority.

VerifyAccess()

Определяет, имеет ли вызывающий поток доступ к этому Dispatcher.Determines whether the calling thread has access to this Dispatcher.

Yield()

Создает объект типа awaitable, который асинхронно направляет элемент управления обратно текущему диспетчеру и предоставляет диспетчеру возможность обработки других событий.Creates an awaitable object that asynchronously yields control back to the current dispatcher and provides an opportunity for the dispatcher to process other events.

Yield(DispatcherPriority)

Создает объект типа awaitable, который асинхронно направляет элемент управления обратно текущему диспетчеру и предоставляет диспетчеру возможность обработки других событий.Creates an awaitable object that asynchronously yields control back to the current dispatcher and provides an opportunity for the dispatcher to process other events. Работа, происходящая, когда элемент управления возвращается к коду, ожидающему результата этого метода, запланирован с указанным приоритетом.The work that occurs when control returns to the code awaiting the result of this method is scheduled with the specified priority.

События

ShutdownFinished

Происходит после остановки Dispatcher.Occurs when the Dispatcher finishes shutting down.

ShutdownStarted

Происходит, когда начинается процесс остановки Dispatcher.Occurs when the Dispatcher begins to shut down.

UnhandledException

Происходит, когда выбрасывается и никаким кодом не перехватывается исключение потока при выполнении делегата с помощью Invoke или BeginInvoke.Occurs when a thread exception is thrown and uncaught during execution of a delegate by way of Invoke or BeginInvoke.

UnhandledExceptionFilter

Происходит, когда выбрасывается и никаким кодом не перехватывается исключение потока при выполнении делегата с помощью Invoke или BeginInvoke на стадии фильтра.Occurs when a thread exception is thrown and uncaught during execution of a delegate by way of Invoke or BeginInvoke when in the filter stage.

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

BeginInvoke(Dispatcher, Action)

Выполняет указанный делегат асинхронно с обычным приоритетом, в потоке, в котором был создан заданный объект Dispatcher.Executes the specified delegate asynchronously with normal priority on the thread that the specified Dispatcher was created on.

BeginInvoke(Dispatcher, Action, DispatcherPriority)

Выполняет указанный делегат асинхронно с заданным приоритетом, в потоке, в котором был создан заданный объект Dispatcher.Executes the specified delegate asynchronously with the specified priority on the thread that the specified Dispatcher was created on.

Invoke(Dispatcher, Action)

Выполняет указанный делегат синхронно с обычным приоритетом, в потоке, в котором был создан заданный объект Dispatcher.Executes the specified delegate synchronously with normal priority on the thread that the specified Dispatcher was created on.

Invoke(Dispatcher, Action, TimeSpan)

Выполняет указанный делегат синхронно, в потоке, в котором был создан объект Dispatcher, и прекращает выполнение по истечении указанного времени ожидания.Executes the specified delegate synchronously on the thread that the specified Dispatcher was created on, and stops execution after the specified time-out period.

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

Выполняет указанный делегат синхронно, с заданным приоритетом, в потоке, в котором был создан объект Dispatcher, и прекращает выполнение по истечении указанного времени ожидания.Executes the specified delegate synchronously with the specified priority on the thread that the specified Dispatcher was created on, and stops execution after the specified time-out period.

Invoke(Dispatcher, Action, DispatcherPriority)

Выполняет указанный делегат синхронно с заданным приоритетом, в потоке, в котором был создан заданный объект Dispatcher.Executes the specified delegate synchronously with the specified priority on the thread that the specified Dispatcher was created on.

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

Дополнительно