create_async 函数

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

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

参数

  • _Function

  • _Func
    的 lambda 或函数对象创建窗口运行时异步构造的。

返回值

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

备注

该 lambda 的返回类型确定构造是否操作。

返回 void 原因事件的创建 Lambda。 返回类型 TResult 原因的结果 TResult 的操作创建的 Lambda。

封装在自身中的异步工作或链是任务延续表示该异步工作的 lambda 也能返回 task<TResult> 。 在这种情况下, lambda 下执行的内联,,因为任务是以异步方式执行的一个,并且,该 lambda 的返回类型。构函数 create_async返回的异步构造。 这意味着返回任务<无效> 的 lambda 将导致事件的创建,,并返回任务<TResult> 的 lambda 将导致 TResult 操作的创建。

该 lambda 可以采用任何零,一个参数。 ,如果使用,有效的参数是 progress_reporter<TProgress>cancellation_token,按照这个顺序两个。 无参数的 lambda 导致异步结构化创建,而无需进度报告的功能。 采用 progress_reporter<TProgress> 的 lambda 将导致 create_async 返回类型 TProgress 报告进度 progress_reporter 对象 report 方法都会调用的异步构造。 采用 cancellation_token 的 lambda 可以使用该标记检查取消或将其传递给它创建的任务,以便异步构造会导致取消任务的取消。

如果 lambda 或函数对象的主体返回结果 (而不是任务<TResult>), lambda 在处理 MTA 中异步执行在运行时为其隐式创建的任务中。 IAsyncInfo::Cancel 方法将导致隐式任务的取消。

如果该 lambda 的主体返回任务, lamba 执行的内联,因此,通过声明该 lambda 采用类型 cancellation_token 的参数您可能会在 lambda 中创建通过将该标记在所有任务的取消,在创建它们。 ,当对生成,的异步操作或事件的 IAsyncInfo::Cancel 还可以使用该标记的 register_callback 方法使运行时调用回调。时。

此功能为地铁样式 apps 才可用。

要求

标题: ppltasks.h

命名空间: 并发

请参见

参考

concurrency 命名空间

任务类

progress_reporter 类

其他资源

cancelation_token Class