Partager via


create_async, fonction (C++ REST SDK)

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

Avertissement

Cette rubrique contient des informations pour le Kit de développement logiciel (SDK) C++ REST 1.0 (nom de code « Casablanca »).Si vous utilisez une version plus récente provenant de la page web Codeplex Casablanca, consultez la documentation locale qui se trouve à l'adresse http://casablanca.codeplex.com/documentation.

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 de fonction à partir duquel créer une construction asynchrone Windows Runtime.

Valeur de retour

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

Notes

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

Les objets lambda qui retournent void provoquent la création d'actions. Les objets lambda qui retournent un résultat de type TResult provoquent la création d'opérations TResult.

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

L'objet lambda peut prendre 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 objet lambda sans arguments provoque la création d'une construction asynchrone sans la capacité de créer un rapport de progression. Si un objet lambda prend un argument progress_reporter<TProgress>, create_async retourne une construction asynchrone qui signale la progression de type TProgress chaque fois que la méthode report de l'objet progress_reporter est appelée. Un objet lambda qui prend un argument cancellation_token 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 de l'objet de fonction retourne un résultat (et non une tâche task<TResult>), l'objet lambda sera exécuté de façon asynchrone dans le processus MTA, dans le contexte d'une tâche que le 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écute en ligne, et si vous déclarez que l'objet lambda prend un argument de type cancellation_token, vous pouvez déclencher l'annulation de toutes les tâches que vous créez au sein de l'objet lambda en passant ce jeton lorsque vous créez les tâches. 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 asynchrone produite.

Cette fonction est uniquement disponible pour les applications Windows Store.

Configuration requise

En-tête : pplxtasks.h

Espace de noms : pplx

Voir aussi

Référence

pplx, espace de noms

task, classe

progress_reporter, classe

Autres ressources

cancelation_token Class