CoreDispatcher Класс

Определение

Предоставляет среда выполнения Windows основной диспетчер сообщений о событиях. Экземпляры этого типа отвечают за обработку оконных сообщений и отправку событий клиенту.

public ref class CoreDispatcher sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class CoreDispatcher final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class CoreDispatcher
Public NotInheritable Class CoreDispatcher
Наследование
Object Platform::Object IInspectable CoreDispatcher
Атрибуты
Реализации

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Комментарии

Экземпляры этого типа можно получить из свойства CoreWindow.Dispatcher. Текущий экземпляр CoreWindow можно получить, вызвав CoreWindow.GetForCurrentThread.

// App.cpp
...
// An implementation of IFrameworkView::Run.
void Run()
{
    CoreWindow window{ CoreWindow::GetForCurrentThread() };
    window.Activate();

    CoreDispatcher dispatcher{ window.Dispatcher() };
    dispatcher.ProcessEvents(CoreProcessEventsOption::ProcessUntilQuit);
}

// The CoreApplication::Run call indirectly calls the App::Run function above.
int __stdcall wWinMain(HINSTANCE, HINSTANCE, PWSTR, int)
{
    CoreApplication::Run(App());
}
void MyCoreWindowEvents::Run() // this is an implementation of IFrameworkView::Run() used to show context. It is called by CoreApplication::Run().
{
    CoreWindow::GetForCurrentThread()->Activate();

    //...

    CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessUntilQuit);
}

Свойства

CurrentPriority

Возвращает и задает приоритет текущей задачи.

HasThreadAccess

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

Методы

ProcessEvents(CoreProcessEventsOption)

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

RunAsync(CoreDispatcherPriority, DispatchedHandler)

Планирует предоставленный обратный вызов в потоке пользовательского интерфейса из рабочего потока и возвращает результаты асинхронно.

RunIdleAsync(IdleDispatchedHandler)

Планирует обратный вызов в потоке пользовательского интерфейса из рабочего потока с приоритетом простоя и возвращает результаты асинхронно.

ShouldYield()

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

ShouldYield(CoreDispatcherPriority)

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

StopProcessEvents()

Запрещает диспетчеру обрабатывать события в очереди.

TryRunAsync(CoreDispatcherPriority, DispatchedHandler)

Пытается запланировать указанный обратный вызов в потоке пользовательского интерфейса из рабочего потока и асинхронно возвращает результаты.

TryRunIdleAsync(IdleDispatchedHandler)

Пытается запланировать обратный вызов в потоке пользовательского интерфейса из рабочего потока с приоритетом простоя и асинхронно возвращает результаты.

События

AcceleratorKeyActivated

Активируется при активации клавиши ускорителя (нажатой или удерживаемой).

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