Applications Windows
Réduire la table des matières
Développer la table des matières
Informations
Le sujet que vous avez demandé est indiqué ci-dessous. Toutefois, ce sujet ne figure pas dans la bibliothèque.

task (Concurrency Runtime), classe

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Classe task de la bibliothèque de modèles parallèles (PPL, Parallel Patterns Library). Un objet task représente le travail qui peut être exécuté de manière asynchrone et simultanément avec d'autres tâches et le travail parallèle produit par des algorithmes parallèles dans le runtime d'accès concurrentiel. Il génère un résultat de type _ResultType quand il s'exécute correctement. Les tâches de type task<void> ne génèrent aucun résultat. Une tâche peut être mise en attente et annulée indépendamment des autres tâches. Elle peut également être composée avec d’autres tâches à l’aide de continuations ( then) et de jointure ( when_all) et un choix ( when_any) des modèles.

template <typename T>
class task;

template <>
class task<void>;

template<typename _ReturnType>
class task;

Paramètres

T
T
_ReturnType
Type de résultat de cette tâche.

Typedefs publics

NomDescription
result_typeType de résultat produit par un objet de cette classe.

Constructeurs publics

NomDescription
Task::Task, constructeurSurchargé. Construit un objet task.

Méthodes publiques

NomDescription
Task::Get, méthodeSurchargé. Retourne le résultat produit par cette tâche. Si la tâche n'est pas dans un état terminal, un appel à get attendra que la tâche se termine. Cette méthode ne retourne pas de valeur lorsqu'elle est appelée sur une tâche dont le result_type a la valeur void.
Task::is_apartment_aware, méthodeDétermine si la tâche désencapsule une interface IAsyncInfo Windows Runtime ou descend de cette tâche.
Task::is_done, méthode (Runtime d’accès concurrentiel)Détermine si la tâche est terminée.
Task::Scheduler, méthode (Runtime d’accès concurrentiel)Retourne le planificateur pour cette tâche.
Task::Then, méthodeSurchargé. Ajoute une tâche de continuation à cette tâche.
Task::wait, méthodeAttend que cette tâche atteigne un état terminal. Il est possible que wait exécute la tâche inline si toutes les dépendances de tâches sont remplies et si elle n'a pas déjà été sélectionnée pour être exécutée par un processus de travail d'arrière-plan.

Opérateurs publics

NomDescription
Task::operator ! =, opérateurSurchargé. Détermine si deux objets task représentent différentes tâches internes.
Task::operator =, opérateurSurchargé. Remplace le contenu d'un objet task par un autre.
Task::operator ==, opérateurSurchargé. Détermine si deux objets task représentent la même tâche interne.

Pour plus d’informations, consultez le parallélisme des tâches.

task

En-tête : ppltasks.h

Espace de noms : concurrency

Retourne le résultat produit par cette tâche. Si la tâche n'est pas dans un état terminal, un appel à get attendra que la tâche se termine. Cette méthode ne retourne pas de valeur lorsqu'elle est appelée sur une tâche dont le result_type a la valeur void.

_ReturnType get() const;

void get() const;

Valeur de retour

Résultat de la tâche.

Notes

Si la tâche est annulée, un appel à get lèvera une task_canceled exception. Si la tâche rencontre une exception différente ou si une exception est propagée à cette tâche à partir d'une tâche précédente, un appel à get lève cette exception.

System_CAPS_ICON_important.jpg Important

Dans un Windows 8.x Store application, n’appelez pas Concurrency::Task :: wait ou get ( wait appelle get) dans le code qui s’exécute sur le STA. Sinon, le runtime lève concurrency::invalid_operation , car ces méthodes bloque le thread actuel et peut entraîner l’application à cesser de répondre. Toutefois, vous pouvez appeler la get méthode pour recevoir le résultat de la tâche précédente dans une continuation basée sur des tâches, car le résultat est immédiatement disponible.

Détermine si la tâche désencapsule une interface IAsyncInfo Windows Runtime ou descend de cette tâche.

bool is_apartment_aware() const;

Valeur de retour

true si la tâche désencapsule une interface IAsyncInfo ou est descendue de cette tâche ; sinon, false.

Détermine si la tâche est terminée.

bool is_done() const;

Valeur de retour

True si la tâche est terminée, false dans le cas contraire.

Notes

La fonction retourne true si la tâche est terminée ou annulée (avec ou sans exception utilisateur).

Détermine si deux objets task représentent différentes tâches internes.

bool operator!= (const task<_ReturnType>& _Rhs) const;

bool operator!= (const task<void>& _Rhs) const;

Paramètres

_Rhs

Valeur de retour

true si les objets font référence à différentes tâches sous-jacentes ; sinon false.

Remplace le contenu d'un objet task par un autre.

task& operator= (const task& _Other);

task& operator= (task&& _Other);

Paramètres

_Other
Objet task source.

Valeur de retour

Notes

Étant donné que task se comporte comme un pointeur intelligent, après une assignation de copie, cet objet task représente la même tâche réelle que _Other.

Détermine si deux objets task représentent la même tâche interne.

bool operator== (const task<_ReturnType>& _Rhs) const;

bool operator== (const task<void>& _Rhs) const;

Paramètres

_Rhs

Valeur de retour

true si les objets font référence à la même tâche sous-jacente ; sinon, false.

Retourne le planificateur pour cette tâche.

scheduler_ptr scheduler() const;

Valeur de retour

Un pointeur vers le planificateur

Construit un objet task.

task();

template<typename T>
__declspec(
    noinline) explicit task(T _Param);

template<typename T>
__declspec(
    noinline) explicit task(T _Param, const task_options& _TaskOptions);

task(
    const task& _Other);

task(
    task&& _Other);

Paramètres

T
Type du paramètre à partir duquel la tâche doit être construite.

_Param
Paramètre à partir duquel la tâche doit être construite. Il peut s'agir d'une expression lambda, d'un objet de fonction, d'un objet task_completion_event<result_type> ou d'une interface Windows::Foundation::IAsyncInfo si vous utilisez des tâches dans votre application Windows Store. L'expression lambda ou l'objet de fonction doit être un type équivalent à std::function<X(void)>, où X peut être une variable de type result_type, task<result_type> ou une interface Windows::Foundation::IAsyncInfo dans les applications Windows Store.

_TaskOptions
Les options de tâche incluent le jeton d’annulation, le planificateur, etc.

_Other
Objet task source.

Notes

Le constructeur par défaut pour task est uniquement présent pour permettre l'utilisation des tâches dans des conteneurs. Une tâche créée par défaut ne peut pas être utilisée tant que vous ne lui assignez pas une tâche valide. Les méthodes telles que get, wait ou then lèvera une invalid_argument exception lorsqu’elle est appelée sur une tâche créée par défaut.

Une tâche créée à partir d'un objet task_completion_event s'achève (et ses continuations sont planifiées) lorsque l'événement d'achèvement de tâche est défini.

La version du constructeur qui accepte un jeton d'annulation crée une tâche qui peut être annulée en utilisant la classe cancellation_token_source à partir de laquelle le jeton a été obtenu. Les tâches créées sans jeton d'annulation ne sont pas annulables.

Les tâches créées à partir d'une interface Windows::Foundation::IAsyncInfo ou d'une expression lambda qui retourne une interface IAsyncInfo atteignent leur état terminal lorsque l'opération ou l'action asynchrone Windows Runtime se termine. De même, les tâches créées à partir d'une expression lamda qui retourne un objet task<result_type> atteignent leur état terminal lorsque la tâche interne atteint son état terminal, et non lorsque le résultat de l'expression lamda est retourné.

task se comporte comme un pointeur intelligent dont le passage par valeur est sécurisé. Il est accessible par plusieurs threads sans nécessiter de verrous.

Les surcharges de constructeur qui acceptent une interface Windows::Foundation::IAsyncInfo ou une expression lambda retournant une telle interface sont uniquement disponibles pour les applications Windows Store.

Pour plus d’informations, consultez le parallélisme des tâches.

Ajoute une tâche de continuation à cette tâche.

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func) const -> typename details::_ContinuationTypeTraits<_Function,
    _ReturnType>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    const task_options& _TaskOptions) const -> typename details::_ContinuationTypeTraits<_Function,
    _ReturnType>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    cancellation_token _CancellationToken,
    task_continuation_context _ContinuationContext) const -> typename details::_ContinuationTypeTraits<_Function,
    _ReturnType>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    const task_options& _TaskOptions = task_options()) const -> typename details::_ContinuationTypeTraits<_Function,
    void>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    cancellation_token _CancellationToken,
    task_continuation_context _ContinuationContext) const -> typename details::_ContinuationTypeTraits<_Function,
    void>::_TaskOfType;

Paramètres

_Function
Type de l’objet fonction qui sera appelé par cette tâche.

_Func
Fonction de continuation à exécuter lorsque cette tâche se termine. Cette fonction de continuation doit accepter comme entrée une variable result_type ou task<result_type>, où result_type correspond au type du résultat produit par cette tâche.

_TaskOptions
Les options de la tâche incluent le jeton d’annulation, le planificateur et le contexte de continuation. Par défaut, les 3 options précédentes sont héritées de la tâche précédente.

_CancellationToken
Jeton d’annulation à associer à la tâche de continuation. Une tâche de continuation créée sans jeton d’annulation hérite du jeton de son antécédent.

_ContinuationContext
Variable qui spécifie où la continuation doit s'exécuter. Cette variable est utile uniquement lorsqu'elle est utilisée dans une application Windows Store. Pour plus d’informations, consultez task_continuation_context

Valeur de retour

Tâche de continuation récemment créée. Le type de résultat de la tâche retournée est déterminé par l'élément retourné par _Func.

Notes

Les surcharges de then qui acceptent une expression lambda ou un foncteur qui retourne une interface Windows::Foundation::IAsyncInfo sont uniquement disponibles pour les applications Windows Store.

Pour plus d’informations sur l’utilisation des continuations de tâches pour créer un travail asynchrone, consultez le parallélisme des tâches.

Attend que cette tâche atteigne un état terminal. Il est possible que wait exécute la tâche inline si toutes les dépendances de tâches sont remplies et si elle n'a pas déjà été sélectionnée pour être exécutée par un processus de travail d'arrière-plan.

task_status wait() const;

Valeur de retour

Valeur task_status qui peut être completed ou canceled. Si la tâche rencontre une exception pendant l'exécution, ou si une exception y est propagée à partir d'une tâche précédente, wait lèvera cette exception.

Notes

System_CAPS_ICON_important.jpg Important

Dans un Windows 8.x Store application, n’appelez pas wait dans le code qui s’exécute sur le STA. Sinon, le runtime lève concurrency::invalid_operation , car cette méthode bloque le thread actuel et peut provoquer le blocage de l'application. Toutefois, vous pouvez appeler la Concurrency::Task :: Get méthode pour recevoir le résultat de la tâche précédente dans une continuation basée sur les tâches.

accès concurrentiel Namespace

© 2017 Microsoft