Partager via


create_async, fonction

Crée une construction asynchrone Windows Runtime basé sur un utilisateur lambda ou un objet de fonction fourni. Le type de retour de create_async est IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ ou IAsyncOperationWithProgress<TResult, TProgress>^ selon la signature de l'expression lambda passée à la méthode.

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

Paramètres

  • _Function

  • _Func
    Objet lambda ou fonction à partir duquel créer une construction asynchrone Windows Runtime.

Valeur de retour

Une construction asynchrone représentée par un IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^, ou une IAsyncOperationWithProgress<TResult, TProgress>^. L'interface retournée dépend de la signature de l'expression lambda passée dans la fonction.

Notes

Le type de retour de l'expression lambda détermine si la construction est une action ou une opération.

Les lambdas qui retournent void provoquent la création des actions. Les lambdas qui retournent un résultat de type TResult provoquent la création des opérations de TResult.

L'expression lambda peut également retourner task<TResult> qui encapsule le travail asynchrone en son sein ou est la continuation d'une chaîne de tâches qui représentent le travail asynchrone. Dans ce cas, l'objet lambda lui-même est exécuté en ligne, puisque les tâches sont celles exécutées de façon asynchrone, et le type de retour de l'objet lambda est déroulé pour produire une construction asynchrone retournée par create_async. Cela implique qu'une expression lambda qui retourne une tâche <void> provoquera la création d'actions, et une expression lambda qui retourne une tâche <TResult> provoquera la création d'opérations TResult.

L'expression lambda peut accepter zéro, un ou deux arguments. Les arguments valides sont progress_reporter<TProgress> et cancellation_token, dans cet ordre si les deux sont utilisés. Un lambda sans arguments provoque la création d'une construction asynchrone sans capacité à rapporter la progression. Un lambda qui prend un rapporteur de progression<TProgress> renverra create_async à une construction asynchrone qui rapportera la progression de type TProgress chaque fois que la méthode report de l'objet de rapporteur de progression est appelé. Un lambda qui prend un jeton d'annulation peut l'utiliser pour vérifier l'annulation, ou le passer aux tâches qu'il crée afin que l'annulation de la construction asynchrone provoque l'annulation de ces tâches.

Si le corps de l'objet lambda ou fonction retourne un résultat (et non une tâche <TResult>), l'objet lambda sera exécuté de façon asynchrone dans le processus MTA dans le contexte d'une tâche que Windows Runtime crée implicitement pour celle-ci. La méthode IAsyncInfo::Cancel provoquera l'annulation de la tâche implicite.

Si le corps de l'objet lambda retourne une tâche, l'objet lamba s'exécutera en ligne et en déclarant l'objet lambda pour prendre un argument de type cancellation_token, vous pouvez déclencher l'annulation de toutes les tâches que vous créez dans l'objet lambda en passant ce jeton lorsque vous les créez. Vous pouvez également utiliser la méthode register_callback sur le jeton pour forcer le runtime à effectuer un rappel lorsque vous appelez IAsyncInfo::Cancel sur l'opération ou l'action async produite.

Cette fonction est uniquement disponible pour les applications Windows Store.

Configuration requise

En-tête : ppltasks.h

Espace de noms : concurrency

Voir aussi

Référence

concurrency, espace de noms

task, classe

progress_reporter, classe

Autres ressources

cancelation_token Class