QtTaskTree::QProcessTaskDeleter Class
class QtTaskTree::QProcessTaskDeleterEin benutzerdefinierter Löschbefehl für „ QProcess “, der von „ QProcessTask “ verwendet wird. Mehr...
| Überschrift: | #include <qprocesstask.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| Seit: | Qt 6.11 |
| Status: | Technologievorschau |
Diese Klasse befindet sich in der Technologievorschau und kann sich noch ändern.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
Öffentliche Funktionen
| void | operator()(QProcess *process) const |
Statische öffentliche Mitglieder
| void | syncAll() |
Ausführliche Beschreibung
QProcessTaskDeleter wird verwendet, um die schnelle Beendigung laufender „ QProcess “-Instanzen über „ QProcessTask “ in „ QTaskTree “ zu ermöglichen. Anstatt die laufende „ QProcess “ zu löschen – was die Ausführung des Aufrufer-Threads möglicherweise für längere Zeit blockieren würde –, verschiebt der QProcessTaskDeleter die laufende „ QProcess “ in einen separaten Thread und versucht, sie auf möglichst schonende Weise zu beenden. Dies geschieht durch den Aufruf von ` QProcess::terminate()` mit dem Timeout ` 500 ms `; sollte der Prozess nach Ablauf dieses Timeouts noch laufen, wird zusätzlich ` QProcess::kill()` aufgerufen.
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, falls einige Prozesse noch beendet werden.
Diese Strategie erscheint sinnvoll, da beim Löschen des laufenden ` QProcess ` über den `QProcessTaskDeleter` nicht sofort blockiert wird, sondern die mögliche (aber nicht sichere) Blockierung bis zum Ende der Anwendung aufgeschoben wird.
Sie wird von ` QProcessTask` verwendet.
Dokumentation der Member-Funktionen
[static] void QProcessTaskDeleter::syncAll()
Diese Methode sollte beim Beenden der Anwendung aufgerufen werden, um die Endbereinigung aller möglicherweise noch laufenden „ QProcess “-Instanzen zu synchronisieren, die vor dem Aufruf von „ QProcessTaskDeleter “ gelöscht wurden. Der Aufruf sollte vom Hauptthread aus erfolgen.
void QProcessTaskDeleter::operator()(QProcess *process) const
Löscht den übergebenen Prozess „ process “ auf möglichst sichere Weise. Wenn der übergebene Prozess „ process “ nicht läuft, wird er direkt gelöscht. Andernfalls wird der Prozess „ process “ in einen separaten Thread verschoben, und es wird versucht, ihn auf möglichst sichere Weise zu beenden, indem „ QProcess::terminate()“ mit dem Timeout „ 500 ms “ aufgerufen wird. Läuft der Prozess nach Ablauf dieses Timeouts immer noch, wird zusätzlich „ QProcess::kill()“ aufgerufen.
© 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.