Auf dieser Seite

QtTaskTree::When Class

class QtTaskTree::When

Ein Element, das die Ausführung eines Körpers verzögert, bis die Schranke vorrückt. Mehr...

Kopfzeile: #include <qbarriertask.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake: QT += tasktree
Seit: Qt 6.11

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Funktionen

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)

Detaillierte Beschreibung

When wird verwendet, um die Ausführung eines Do Körpers zu verzögern, bis das zugehörige QStoredBarrier fortgeschritten ist oder bis das Signal von QCustomTask ausgegeben wird. Sie wird in Verbindung mit dem Element Do wie verwendet: When () >> Do {}.

Siehe auch Do.

Dokumentation der Mitgliedsfunktionen

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

Erzeugt ein verzögerndes Element, das kicker nimmt und ExecutableItem zurückgibt, um parallel zu einem Do body ausgeführt zu werden. Der Do -Body wird so lange verzögert, bis der QStoredBarrier, der an den kicker übergeben wird, fortgeschritten ist. Die ExecutableItem, die von kicker zurückgegeben wird, und der Do -Body werden unter Verwendung von policy parallel ausgeführt.

Wenn Sie beispielsweise die Ausführung der nachfolgenden Aufgaben verzögern möchten, bis die QProcess gestartet ist, könnte das Rezept wie folgt aussehen:

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,
        ...
    }
};

Wenn das obige Rezept ausgeführt wird, führt QTaskTree eine QProcessTask parallel zu einem Do body aus. Ein Do body ist zunächst in der Warteschleife - er wird fortgesetzt, sobald die Schranke, die an den Kicker übergeben wird, weiterläuft. Dies geschieht, sobald der QProcess gestartet wird. Von da an läuft QProcess parallel mit dem Do body.

Siehe auch 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)

Erzeugt ein verzögerndes Element, das customTask und dessen Task's signal parallel zu einem Do Körper laufen lässt. Der Do Körper wird verzögert, bis der Task's signal emittiert wird. Der customTask und der Do Körper werden parallel mit dem policy ausgeführt.

Der Code aus dem Konstruktor des anderen When könnte vereinfacht werden zu:

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

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

Hinweis: Der Task Typ des übergebenen customTask muss von QObject abgeleitet werden.

Siehe auch Do.

Verwandte Nicht-Mitglieder

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

Kombiniert whenItem mit doItem body und gibt ein Group zurück, das in Aufgabenbaumrezepten verwendet werden kann.

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