create_async 函数

基于用户提供的 lambda 或函数对象创建 Windows 运行时异步构造。 create_async 的返回类型是基于传递给方法的 lambda 签名的一个 IAsyncAction^IAsyncActionWithProgress<TProgress>^IAsyncOperation<TResult>^IAsyncOperationWithProgress<TResult, TProgress>^

template<
   typename _Function
>
__declspec(
   noinline
) auto create_async(const _Function& _Func) -> decltype(ref new details::_AsyncTaskGeneratorThunk<_Function>(_Func));

参数

  • _Function

  • _Func
    从其中创建 Windows 运行时异步构造的 lambda 或函数对象。

返回值

IAsyncAction^、IAsyncActionWithProgress<TProgress>^、IAsyncOperation<TResult>^ 或 IAsyncOperationWithProgress<TResult、TProgress>^ 表示的异步构造。 返回的接口依赖于传递给函数的 lambda 的签名。

备注

该 lambda 的返回类型确定该构造是一个活动还是一项操作。

返回 void 的 Lambda 产生操作。 返回类型 TResult 的结果的 Lambda 产生 TResult 操作。

Lambda 可能还返回 task<TResult>,其在自身中封装异步工作或是表示该异步工作的任务链继续。 在此例中,由于任务是异步执行的,所以以内联方式执行 lambda,然后打开 lambda 的返回类型以生成 create_async 返回的异步构造。 这意味着返回 task<void> 的 lambda 将导致操作的创建,而返回 task<TResult> 的 lambda 将导致 TResult 操作的创建。

该 lambda 可采用零个、一个或两个参数。 有效的参数是 progress_reporter<TProgress>cancellation_token,两个均使用的话顺序如上。 无参数的 lambda 导致创建无进度报告功能的异步构造。 采用 progress_reporter<TProgress> 的 lambda 将导致 create_async 返回一个在每次调用 progress_reporter 对象的 report 方法时报告 TProgress 类型进度的异步构造。 采用 cancellation_token 的 lambda 可以使用该标记来检查取消情况,或将其传递给它创建的任务,以达到取消异步构造即取消这些任务的效果。

如果 lambda 或函数对象的主体返回一个结果(并且不是任务<TResult>),则将在运行时隐式为其创建的任务上下文中在过程 MTA 内异步执行 lambda。 IAsyncInfo::Cancel 方法将导致隐式任务的取消。

如果该 lambda 的主体返回一个任务,lamba 执行内联,并且通过声明该 lambda 采用参数类型 cancellation_token,则您可以通过在创建标记时将其传入,触发取消在 lambda 中创建的任何任务。 在您对异步操作或生成的操作调用 IAsyncInfo::Cancel 时会让运行时进行回调的标记上,您还可以使用 register_callback 方法。

此函数只能用于 Windows 应用商店应用程序。

要求

**标头:**ppltasks.h

**命名空间:**并发

请参见

参考

concurrency 命名空间

task 类

progress_reporter 类

其他资源

cancelation_token Class