このページでは

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)
QtTaskTree::Group operator>>(const QtTaskTree::When &whenItem, const QtTaskTree::Do &doItem)

詳細説明

Whenは、関連するQStoredBarrier が進むまで、あるいはQCustomTask のシグナルが発せられるまで、Do 本体の実行を遅らせるために使われる。のようなDo 要素と組み合わせて使用される:When () >> Do {}.

Doも参照のこと

メンバ関数ドキュメント

[explicit] When::When(const QtTaskTree::BarrierKickerGetter &kicker, QtTaskTree::WorkflowPolicy policy = WorkflowPolicy::StopOnError)

Do 本体と並行して実行されるExecutableItem を返すkicker を受け取り、遅延要素を作成する。kicker に渡されたQStoredBarrier が進むまで、Do 本体が遅延される。kickerDo ボディが返すExecutableItem は、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 は、Do 本体と並行してQProcessTask を実行する。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 が発せられるまで遅延される。customTaskDo のボディは、policy を使って並列に実行される。

もう一方のWhenのコンストラクタのコードは次のように単純化できる:

const auto onSetup = [barrier](QProcess &process) {
    ... // Setup process program, arguments, environment, etc...
};

const Group recipe {
    When (QProcessTask(onSetup), &QProcess::started) >> Do {
        delayedTask1,
        ...
    }
};

注: 渡されたcustomTaskTask 型は、QObject から派生させる必要がある。

Doも参照のこと

関連する非会員

QtTaskTree::Group operator>>(const QtTaskTree::When &whenItem, const QtTaskTree::Do &doItem)

whenItemdoItem 本体と結合し、タスクツリーのレシピで使えるようにGroup を返す。

© 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.