QtTaskTree::When Class
class QtTaskTree::WhenUn élément qui retarde l'exécution d'un corps jusqu'à ce que la barrière avance. Plus...
| En-tête : | #include <qbarriertask.h> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS TaskTree)target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake : | QT += tasktree |
| Depuis : | Qt 6.11 |
Note : Toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| When(const QtTaskTree::BarrierKickerGetter &kicker, QtTaskTree::WorkflowPolicy policy = WorkflowPolicy::StopOnError) | |
| When(const QtTaskTree::QCustomTask<Task, Adapter, Deleter> &customTask, Signal signal, QtTaskTree::WorkflowPolicy policy = QtTaskTree::WorkflowPolicy::StopOnError) |
Non-membres apparentés
| QtTaskTree::Group | operator>>(const QtTaskTree::When &whenItem, const QtTaskTree::Do &doItem) |
Description détaillée
When est utilisé pour retarder l'exécution d'un corps Do jusqu'à ce que le corps QStoredBarrier soit avancé ou jusqu'à ce que le signal QCustomTask soit émis. Elle est utilisée en conjonction avec l'élément Do comme : When () >> Do {}.
Voir également Do.
Documentation sur les fonctions membres
[explicit] When::When(const QtTaskTree::BarrierKickerGetter &kicker, QtTaskTree::WorkflowPolicy policy = WorkflowPolicy::StopOnError)
Crée un élément retardateur, prenant kicker et renvoyant ExecutableItem pour être exécuté en parallèle avec un corps Do. Le corps Do est retardé jusqu'à ce que le QStoredBarrier transmis au kicker soit avancé. Le ExecutableItem renvoyé par le kicker et le corps du Do seront exécutés en parallèle à l'aide du policy.
Par exemple, si vous souhaitez retarder l'exécution des tâches suivantes jusqu'à ce que QProcess soit lancé, la recette pourrait ressembler à ce qui suit :
const auto kicker = [](const QStoredBarrier &barrier) { const auto onSetup = [barrier](QProcess &process) { QObject::connect(&process, &QProcess::started, barrier.activeStorage(), &QBarrier::advance); ... // Setup process program, arguments, environment, etc... }; return QProcessTask(onSetup); }; const Group recipe { When (kicker) >> Do { delayedTask1, ... } };
Lorsque la recette ci-dessus est exécutée, le QTaskTree exécute un QProcessTask en parallèle avec un corps Do. Un corps Do est initialement en attente - il continuera après que la barrière passée au kicker aura avancé. Cela se produit dès que QProcess est démarré. Depuis, QProcess fonctionne en parallèle avec le corps Do.
Voir aussi Do.
[explicit] template <
typename Task,
typename Adapter,
typename Deleter,
typename Signal
>
When::When(const QtTaskTree::QCustomTask<Task, Adapter, Deleter> &customTask, Signal signal, QtTaskTree::WorkflowPolicy policy = QtTaskTree::WorkflowPolicy::StopOnError)
Crée un élément retardateur, prenant customTask et son Task's signal pour être exécuté en parallèle avec un corps Do. Le corps Do est retardé jusqu'à ce que le signal de Task soit émis. Les corps customTask et Do seront exécutés en parallèle en utilisant le corps policy.
Le code du constructeur de l'autre When pourrait être simplifié comme suit :
const auto onSetup = [barrier](QProcess &process) { ... // Setup process program, arguments, environment, etc... }; const Group recipe { When (QProcessTask(onSetup), &QProcess::started) >> Do { delayedTask1, ... } };
Note : Le type Task du customTask passé doit être dérivé de QObject.
Voir aussi Do.
Non-membres apparentés
QtTaskTree::Group operator>>(const QtTaskTree::When &whenItem, const QtTaskTree::Do &doItem)
Combine whenItem avec le corps de doItem et renvoie un Group prêt à être utilisé dans les recettes de l'arbre des tâches.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.