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
方法强制延续任务在上下文中同步运行,从而促使先前任务完成。
如果在附加延续时前面的任务已完成,那么延续将在附加延续的上下文中同步运行。