Compartir a través de


create_async (Función)

Crea una construcción asincrónica en tiempo de ejecución de Windows basada en un objeto proporcionado por el usuario lambda o la función.El tipo de valor devuelto de create_async es uno de IAsyncAction^, de IAsyncActionWithProgress<TProgress>^, de IAsyncOperation<TResult>^, o de IAsyncOperationWithProgress<TResult, TProgress>^ basado en la firma lambda pasada al método.

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

Parámetros

  • _Function

  • _Func
    El objeto lambda o la función de que para crear una construcción asincrónica en tiempo de ejecución de Windows.

Valor devuelto

Una construcción asincrónica representada por un ^ de IAsyncAction^, de IAsyncActionWithProgress<TProgress>, ^ de IAsyncOperation<TResult>, o un ^ de IAsyncOperationWithProgress<TResult, TProgress>.La interfaz devuelta depende de la firma lambda pasada a la función.

Comentarios

El tipo de valor devuelto lambda determina si la construcción es una acción o una operación.

Lambdas que devuelve causa vacía la creación de acciones.Lambdas que devuelve un resultado de la causa de tipos TResult la creación de operaciones de TResult.

La expresión lambda también puede devolver task<TResult> que encapsula el trabajo asincrónico dentro de sí mismo o es la continuación de una cadena de las tareas que representan el trabajo asincrónico.En este caso, la expresión lambda en sí es insertado ejecutado, dado que las tareas son las que se ejecutan de forma asincrónica, y desempaquetan el tipo de valor devuelto lambda para generar la construcción asincrónica devuelta por create_async.Esto implica que una expresión lambda que devuelve una tarea<vacío> provoca la creación de acciones, y una expresión lambda que devuelve una tarea<TResult> provoca la creación de operaciones de TResult.

La expresión lambda puede tomar cualquier cero, uno o dos argumentos.Los argumentos válidos son progress_reporter<TProgress> y cancellation_token, en ese orden si ambos se utilizan.Una expresión lambda sin argumentos produce la creación de una construcción asincrónica sin la capacidad para el informe sobre el progreso.Una expresión lambda que toma un progress_reporter<TProgress> hará create_async para devolver una construcción asincrónica que el informa del progreso TProgress escrito el método de report del objeto de progress_reporter se denomina cada vez.Una expresión lambda que toma un cancellation_token puede utilizar ese símbolo para comprobar la cancelación, o pasarlo a las tareas que crea de forma que la cancelación de la construcción asincrónica provoca la cancelación de esas tareas.

Si el cuerpo del objeto lambda o function devuelve un resultado (y no una tarea<TResult>), el lamdba se ejecutará de forma asincrónica en MTA de proceso en el contexto de una tarea que el runtime crea implícitamente para él.El método de IAsyncInfo::Cancel provoca la cancelación de tareas implícita.

Si el cuerpo de la expresión lambda devuelve una tarea, el lamba ejecuta inline, y declarando la lambda para tomar un argumento de cancellation_token tipo puede desencadenar la cancelación de cualquier tarea crear dentro de la expresión lambda pasando ese símbolo en al crearlo.También puede utilizar el método de register_callback en el símbolo para que el tiempo de ejecución para invocar una devolución de llamada cuando se llama a IAsyncInfo::Cancel en la operación o action async generado.

Esta función solo está disponible para las aplicaciones de estilo de Metro.

Requisitos

encabezado: ppltasks.h

Simultaneidad deespacio de nombres:

Vea también

Referencia

concurrency (Espacio de nombres)

clase de la tarea

progress_reporter (Clase)

Otros recursos

cancelation_token Class