create_async, fonction

Crée un élément asynchrone d'exécution de fenêtres selon un objet fourni par l'utilisateur de lambda ou de fonction.Le type de retour d' create_async est un d' IAsyncAction^, d' IAsyncActionWithProgress<TProgress>^, d' IAsyncOperation<TResult>^, ou d' IAsyncOperationWithProgress<TResult, TProgress>^ selon la signature de l'expression lambda passé à la méthode.

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

Paramètres

  • _Function

  • _Func
    L'objet de lambda ou de fonction dont pour créer un élément asynchrone d'exécution windows.

Valeur de retour

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

Notes

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

Lambdas qui retournent la cause void la création des actions.Lambdas qui retournent un résultat de cause d' TResult de type la création des opérations de TResult.

Le lambda peut également retourner task<TResult> qui encapsule le travail asynchrone dans lui-même ou est la suite d'une chaîne des tâches qui représentent le travail asynchrone.Dans ce cas, le lambda lui-même est inline exécuté, étant donné que les tâches sont celles qui exécutent de manière asynchrone, et le type de retour du lambda n'est pas encapsulé pour produire l'élément asynchrone retourné par create_async.Cela implique qu'une expression lambda qui retourne une tâche<void> entraîne la création des actions, et une expression lambda qui retourne une tâche<TResult> entraîne la création des opérations de TResult.

Le lambda peut prendre l'une ou l'autre de zéro, une ou deux arguments.Les arguments valides sont progress_reporter<TProgress> et cancellation_token, dans cet ordre si les deux sont utilisés.Une expression lambda sans arguments provoque la création d'un élément asynchrone sans fonction pour le rapport de progression.Une expression lambda qui prend un progress_reporter<TProgress> fera pour retourner create_async un élément asynchrone que la signale la progression du type TProgress chaque fois que la méthode d' report d'objet de progress_reporter est appelé.Une expression lambda qui prend un cancellation_token peut utiliser ce jeton pour vérifier l'annulation, ou la passe aux tâches qu'elle crée afin que l'annulation de l'élément asynchrone provoque l'annulation de ces tâches.

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

Si le corps de l'expression lambda retourne une tâche, un lamba exécute inline, et en déclarant le 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 le lambda en passant le jeton dans lorsque vous les créez.Vous pouvez également utiliser la méthode d' register_callback du jeton pour faire pour appeler le runtime un rappel lorsque vous appelez IAsyncInfo::Cancel sur l'opération ou l'action async produite.

Cette fonction est uniquement disponible pour les applications de style du métro.

Configuration requise

en-tête : ppltasks.h

Accès concurrentiel del'espace de noms :

Voir aussi

Référence

concurrency, espace de noms

classe de tâche

progress_reporter, classe

Autres ressources

cancelation_token Class