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
命名空间: 并发
请参见
参考
其他资源
cancelation_token Class