Когда задача PPL выполняется в потоке пользовательского интерфейса?

При вызове create_task есть ли способ убедиться, что задача не выполняется в потоке пользовательского интерфейса?

Я хочу быть уверен, что не случайно вызвал ожидание внутри задачи, которую каким-то образом удалось выполнить в потоке пользовательского интерфейса.

1

Решение

Функция create_task не будет самопроизвольно переходить в поток пользовательского интерфейса: если вы не вызовете ее из потока пользовательского интерфейса, она не будет выполняться там. Вам необходимо явно вызвать Диспетчер, чтобы вернуться.

Задача, поддерживающая квартиру (которая возвращает IAsyncAction или IAsyncOperation), будет продолжаться в своей квартире по умолчанию, если не задан task_continuation_context, чтобы сказать иначе. Обычный случай запуска задачи в потоке пользовательского интерфейса будет продолжен в потоке пользовательского интерфейса.

См. Раздел «Управление контекстом потока» в MSDN. Асинхронное программирование на C ++ документы для более подробной информации.

2

Другие решения


По вопросам рекламы [email protected]