При вызове create_task есть ли способ убедиться, что задача не выполняется в потоке пользовательского интерфейса?
Я хочу быть уверен, что не случайно вызвал ожидание внутри задачи, которую каким-то образом удалось выполнить в потоке пользовательского интерфейса.
Функция create_task не будет самопроизвольно переходить в поток пользовательского интерфейса: если вы не вызовете ее из потока пользовательского интерфейса, она не будет выполняться там. Вам необходимо явно вызвать Диспетчер, чтобы вернуться.
Задача, поддерживающая квартиру (которая возвращает IAsyncAction или IAsyncOperation), будет продолжаться в своей квартире по умолчанию, если не задан task_continuation_context, чтобы сказать иначе. Обычный случай запуска задачи в потоке пользовательского интерфейса будет продолжен в потоке пользовательского интерфейса.
См. Раздел «Управление контекстом потока» в MSDN. Асинхронное программирование на C ++ документы для более подробной информации.