Поделиться через


Класс task_continuation_context

Класс task_continuation_context позволяет указать место продолжения выполнения задачи. Это имеет смысл использовать этот класс только в приложении Windows Runtime. Для приложений, не относящихся к Windows Runtime, контекст выполнения задачи продолжения определяется выполняющей средой и не подлежит настройке.

Синтаксис

class task_continuation_context : public details::_ContextCallback;

Участники

Открытые методы

Имя Описание
get_current_winrt_context Возвращает объект контекста продолжения задачи, представляющий текущий контекст потока winrt.
use_arbitrary Создает контекст продолжения задачи, который позволяет среде выполнения выбрать контекст для продолжения.
использовать_текущее Возвращает объект контекста продолжения задачи, представляющий контекст текущего выполнения.
использовать_по_умолчанию Создает контекст продолжения задачи по умолчанию.
use_synchronous_execution Возвращает объект контекста продолжения задачи, представляющий контекст синхронного выполнения.

Иерархия наследования

_ContextCallback

task_continuation_context

Требования

Заголовок: ppltasks.h

Пространство имен: конкурентность

get_current_winrt_context

Возвращает объект контекста продолжения задачи, представляющий текущий контекст потока WinRT.

Синтаксис

static task_continuation_context get_current_winrt_context();

Возвращаемое значение

Текущий контекст потока Windows Runtime. Возвращает пустой task_continuation_context, если вызывается из контекста, отличного от среды выполнения Windows.

Замечания

Метод get_current_winrt_context фиксирует контекст потока среды выполнения Windows вызывающего объекта. Он возвращает пустой контекст для вызовов из сред, не относящихся к среде выполнения Windows.

Возвращаемое значение get_current_winrt_context можно использовать, чтобы указать среде выполнения, что продолжение должно выполняться в апартаментной модели захваченного контекста (STA или MTA), независимо от того, учитывается ли предшествующая задача. Задача с учётом среды — это задача, которая использует интерфейс Windows Runtime IAsyncInfo, или задача, производная от такой задачи.

Этот метод аналогичен методу use_current, но он также доступен для кода на C++ без поддержки расширения C++/CX. Он предназначен для использования опытными пользователями, пишущими библиотечный код, не зависящий от C++/CX, для вызова из собственных приложений и Windows Runtime. Если вам не нужна эта функция, мы рекомендуем метод use_current, который доступен только клиентам C++/CX.

использовать_произвольное

Создает контекст продолжения выполнения задачи, который позволяет среде выполнения выбрать контекст для продолжения.

Синтаксис

static task_continuation_context use_arbitrary();

Возвращаемое значение

Контекст продолжения задачи, представляющий произвольную позицию.

Замечания

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

use_arbitrary можно использовать для отключения поведения по умолчанию для продолжения задачи, учитывающей модель одноквартирного приложения, созданной в STA.

Этот метод доступен только для приложений на платформе Windows Runtime.

использовать_текущий

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

static task_continuation_context use_current();

Возвращаемое значение

Текущий контекст выполнения.

Замечания

Этот метод захватывает контекст Windows Runtime вызывающего, чтобы продолжения могли выполняться в правильном апартаменте.

Возвращаемое значение use_current можно использовать для указания времени выполнения, что продолжение должно выполняться в захваченном контексте (STA или MTA), независимо от того, учитывается ли предшествующая задача. Задача с учётом среды — это задача, которая использует интерфейс Windows Runtime IAsyncInfo, или задача, производная от такой задачи.

Этот метод доступен только для приложений на платформе Windows Runtime.

использовать_по_умолчанию

Создает контекст продолжения задачи по умолчанию.

static task_continuation_context use_default();

Возвращаемое значение

Контекст продолжения по умолчанию.

Замечания

Контекст по умолчанию используется, если при вызове then метода не указан контекст продолжения. В приложениях Windows для Windows 7 и более поздних версий, а также классических приложениях в Windows 8 и более поздних версиях среда выполнения определяет, где будут выполняться продолжения задач. Однако в приложении платформы Windows Runtime контекст продолжения по умолчанию для выполнения продолжения на задаче, учитывающей apartment, является apartment, где вызывается then.

Задача с учётом среды — это задача, которая использует интерфейс Windows Runtime IAsyncInfo, или задача, производная от такой задачи. Таким образом, если вы планируете продолжение задачи с учетом квартиры в среда выполнения Windows STA, продолжение будет выполняться в этом STA.

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

task_continuation_context::use_synchronous_execution

Возвращает объект контекста продолжения задачи, представляющий контекст синхронного выполнения.

Синтаксис

static task_continuation_context use_synchronous_execution();

Возвращаемое значение

Контекст синхронного выполнения.

Замечания

Метод use_synchronous_execution заставляет задачу продолжения синхронно выполняться в контексте, что приводит к завершению предшествующей задачи.

Если предшествующая задача уже завершена при присоединении продолжения, продолжение выполняется синхронно в контексте, в котором присоединяется продолжение.

См. также

Пространство имен параллелизм