QtTaskTree::When Class
class QtTaskTree::Whenバリアが前進するまで本体の実行を遅延させる要素。詳細...
| ヘッダー: | #include <qbarriertask.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| 以下のように: | Qt 6.11 |
| ステータス: | テクノロジープレビュー |
このクラスはテクノロジープレビュー段階にあり、変更される可能性があります。
注:このクラスのすべての関数は再入可能です。
パブリック関数
| 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) | |
| When(QtTaskTree::When &&other) |
詳細な説明
Do の本体の実行を、関連するQStoredBarrier が前進するか、QCustomTask のシグナルが発行されるまで遅延させるために使用されます。これは、次のようにDo 要素と組み合わせて使用されます:When () >> Do {} 。
Doも参照してください 。
メンバ関数のドキュメント
[explicit] When::When(const QtTaskTree::BarrierKickerGetter &kicker, QtTaskTree::WorkflowPolicy policy = WorkflowPolicy::StopOnError)
kicker を受け取り、ExecutableItem を返す遅延要素を作成し、これをDo 本体と並行して実行します。Do 本体は、kicker に渡されたQStoredBarrier が進行するまで遅延されます。kicker によって返されるExecutableItem と、Do 本体は、policy を使用して並行して実行されます。
たとえば、QProcess が開始されるまで後続のタスクの実行を遅延させたい場合、レシピは次のような形になります:
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,
...
}
};上記のリシピが実行されると、QTaskTree はQProcessTask をDo 本体と並行して実行します。Do 本体は当初保留状態になりますが、キッカーに渡されたバリアが進行した後に実行が再開されます。これは、QProcess が開始されるとすぐに発生します。それ以降、QProcess はDo 本体と並行して実行されます。
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)
遅延要素を作成し、customTask とそのTask のsignal を、Do の本体と並行して実行するようにします。Do の本体は、Task のsignal がエミットされるまで遅延されます。customTask とDo の本体は、policy を使用して並行して実行されます。
もう一方の When のコンストラクタのコードは、次のように簡略化できます。
const auto onSetup = [barrier](QProcess &process) {
... // Setup process program, arguments, environment, etc...
};
const Group recipe {
When (QProcessTask(onSetup), &QProcess::started) >> Do {
delayedTask1,
...
}
};注: 渡されるcustomTask のTask 型は 、QObject から派生している必要があります。
Doも参照してください 。
[constexpr noexcept default] When::When(QtTaskTree::When &&other)
When のインスタンスをMoveコンストラクタで生成します。
© 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.