task_continuation_context 类

task_continuation_context 类可让你指定想要执行延续的位置。 只能从 Windows 运行时应用使用这个类。 对于非 Windows 运行时应用,任务延续的执行上下文由运行时确定,不可配置。

语法

class task_continuation_context : public details::_ContextCallback;

成员

公共方法

名称 描述
get_current_winrt_context 返回表示当前 winrt 线程上下文的任务延续上下文对象。
use_arbitrary 创建允许运行时选择延续的执行上下文的任务延续上下文。
use_current 返回表示当前执行上下文的任务延续上下文对象。
use_default 创建默认任务延续上下文。
use_synchronous_execution 返回表示同步执行上下文的任务延续上下文对象。

继承层次结构

_ContextCallback

task_continuation_context

要求

标头:ppltasks.h

命名空间: 并发

get_current_winrt_context

返回表示当前 WinRT 线程上下文的任务延续上下文对象。

语法

static task_continuation_context get_current_winrt_context();

返回值

当前 Windows 运行时线程上下文。 如果从非 Windows 运行时上下文调用,则返回空 task_continuation_context。

备注

get_current_winrt_context 方法捕获调用方的 Windows 运行时线程上下文。 它将空上下文返回到非 Windows 运行时调用方。

get_current_winrt_context 返回的值可用于指示运行时应在捕获的上下文(STA 与 MTA)的单元模型中执行延续,而不考虑前面的任务是否可识别单元。 可识别单元的任务是解包 Windows 运行时 IAsyncInfo 接口的任务,或从此类任务派生的任务。

此方法类似于 use_current 方法,但它也可用于不具备 C++/CX 扩展支持的本机 C++ 代码。 它适用于为本地和 Windows 运行时调用方编写与 C++/CX 无关的库代码的高级用户。 除非需要此功能,否则建议使用 use_current 方法,该方法仅适用于 C++/CX 客户端。

use_arbitrary

创建允许运行时选择延续的执行上下文的任务延续上下文。

语法

static task_continuation_context use_arbitrary();

返回值

表示任意位置的任务延续上下文。

备注

当使用此延续上下文时,延续将在运行时选择的上下文中执行,即使前面的任务可识别单元。

use_arbitrary 可用于在 STA 中创建的可识别单元的任务上关闭延续的默认行为。

此方法仅适用于 Windows 运行时应用。

use_current

返回表示当前执行上下文的任务延续上下文对象。

static task_continuation_context use_current();

返回值

当前执行上下文。

备注

此方法捕获调用方的 Windows 运行时上下文,以便可以在正确的单元中执行延续。

use_current 返回的值可用于指示运行时应在捕获的上下文(STA 与 MTA)中执行延续,而不考虑前面的任务是否可识别单元。 可识别单元的任务是解包 Windows 运行时 IAsyncInfo 接口的任务,或从此类任务派生的任务。

此方法仅适用于 Windows 运行时应用。

use_default

创建默认任务延续上下文。

static task_continuation_context use_default();

返回值

默认延续上下文。

备注

如果在调用 then 方法时未指定延续上下文,则使用默认上下文。 在 Windows 7 及更低版本的 Windows 应用程序,以及 Windows 8 及更高版本的桌面应用程序中,运行时将确定任务延续的执行位置。 但是,在 Windows 运行时应用中,对可识别单元的任务执行延续的默认延续上下文是调用 then 的单元。

可识别单元的任务是解包 Windows 运行时 IAsyncInfo 接口的任务,或从此类任务派生的任务。 因此,如果在 Windows 运行时 STA 中对可识别单元的任务计划延续,那么延续将在该 STA 中执行。

非可识别单元的任务的延续将在运行时选择的上下文中执行。

task_continuation_context::use_synchronous_execution

返回表示同步执行上下文的任务延续上下文对象。

语法

static task_continuation_context use_synchronous_execution();

返回值

同步执行上下文。

注解

use_synchronous_execution 方法强制延续任务在上下文中同步运行,从而促使先前任务完成。

如果在附加延续时前面的任务已完成,那么延续将在附加延续的上下文中同步运行。

另请参阅

并发命名空间