Auf dieser Seite

QtTaskTree::QProcessTaskDeleter Class

class QtTaskTree::QProcessTaskDeleter

Ein benutzerdefinierter Deleter für QProcess, der von QProcessTask verwendet wird. Mehr...

Kopfzeile: #include <qprocesstask.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

void operator()(QProcess *process) const

Statische öffentliche Mitglieder

void syncAll()

Detaillierte Beschreibung

QProcessTaskDeleter wird verwendet, um eine schnelle Zerstörung laufender QProcess Instanzen über QProcessTask in QTaskTree zu ermöglichen. Anstatt den laufenden QProcess zu löschen, was die Thread-Ausführung des Aufrufers für lange Zeit blockieren kann, verschiebt der QProcessTaskDeleter den laufenden QProcess in einen separaten Thread und versucht, ihn auf möglichst schonende Weise zu beenden. Dies besteht aus dem Aufruf von QProcess::terminate() mit 500 ms timeout, und wenn der Prozess nach Ablauf dieses Timeouts noch läuft, wird der zusätzliche Aufruf von QProcess::kill() durchgeführt.

Schließlich sollte beim Beenden der Anwendung QProcessTaskDeleter::syncAll() aufgerufen werden, um alle Prozesse zu synchronisieren, die möglicherweise noch in einem separaten Thread beendet werden. Der Aufruf von QProcessTaskDeleter::syncAll() ist blockierend, für den Fall, dass einige Prozesse noch in der Finalisierung sind.

Diese Strategie erscheint sinnvoll, da wir beim Löschen der laufenden QProcess über QProcessTaskDeleter nicht sofort blockieren, sondern die mögliche (aber nicht sichere) Blockierung bis zum Ende einer Anwendung verschieben.

Sie wird von QProcessTask verwendet.

Dokumentation der Mitgliedsfunktionen

[static] void QProcessTaskDeleter::syncAll()

Diese Methode sollte beim Beenden der Anwendung aufgerufen werden, um die Beendigung aller möglicherweise noch laufenden QProcess Instanzen zu synchronisieren, die zuvor mit QProcessTaskDeleter gelöscht wurden. Der Aufruf sollte vom Hauptthread ausgeführt werden.

void QProcessTaskDeleter::operator()(QProcess *process) const

Löscht die übergebene process auf eine sichere Art und Weise. Wenn der übergebene process nicht läuft, wird er direkt gelöscht. Andernfalls wird process in einen separaten Thread verschoben und versucht, ihn auf sicherste Weise zu beenden, indem QProcess::terminate() mit einer Zeitüberschreitung von 500 ms aufgerufen wird. Wenn der Prozess nach Ablauf dieser Zeitüberschreitung noch läuft, wird der zusätzliche Aufruf von QProcess::kill() durchgeführt.

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