Sur cette page

QtTaskTree::QProcessTaskDeleter Class

class QtTaskTree::QProcessTaskDeleter

Un outil de suppression personnalisé pour QProcess, utilisé par QProcessTask. En savoir plus...

En-tête : #include <qprocesstask.h>
CMake : find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake : QT += tasktree
Depuis : Qt 6.11
Statut : Aperçu technologique

Cette classe est en avant-première technologique et est susceptible d'être modifiée.

Remarque : toutes les fonctions de cette classe sont réentrantes.

Fonctions publiques

void operator()(QProcess *process) const

Membres publics statiques

void syncAll()

Description détaillée

QProcessTaskDeleter est utilisé pour permettre la destruction rapide d’instances d’ QProcess en cours d’exécution via QProcessTask dans QTaskTree. Au lieu de supprimer l’ QProcess en cours d’exécution, ce qui peut bloquer l’exécution du thread de l’appelant pendant un long moment, QProcessTaskDeleter déplace l’ QProcess en cours d’exécution vers un thread distinct et tente de la terminer de la manière la plus douce possible. Cela consiste à appeler ` QProcess::terminate()` avec un délai d’expiration de ` 500 ms `, et si le processus est toujours en cours d’exécution à l’issue de ce délai, un appel supplémentaire à ` QProcess::kill()` est effectué.

Enfin, à la fermeture de l’application, la fonction ` QProcessTaskDeleter::syncAll()` doit être appelée afin de synchroniser tous les processus susceptibles d’être encore en cours de finalisation dans un thread séparé. L’appel à ` QProcessTaskDeleter::syncAll()` est bloquant au cas où certains processus seraient encore en cours de finalisation.

Cette stratégie semble judicieuse, car lors de la suppression de la tâche en cours d’exécution QProcess via QProcessTaskDeleter, nous ne bloquons pas immédiatement, mais reportons le blocage éventuel (mais non certain) jusqu’à la fin de l’application.

Elle est utilisée par ` QProcessTask`.

Documentation des fonctions membres

[static] void QProcessTaskDeleter::syncAll()

Cette méthode doit être appelée à la fermeture de l'application afin de synchroniser la finalisation de toutes les instances de ` QProcess ` encore éventuellement en cours d'exécution qui ont été supprimées avant l'appel de ` QProcessTaskDeleter`. Cet appel doit être effectué depuis le thread principal.

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

Supprime l'process transmis de la manière la plus sûre possible. Si l'process transmis n'est pas en cours d'exécution, il est supprimé directement. Dans le cas contraire, l'process est déplacé vers un thread distinct et le système tente de le terminer de la manière la plus sûre possible en appelant la fonction QProcess::terminate() avec un délai d'expiration de 500 ms. Si le processus est toujours en cours d'exécution à l'expiration de ce délai, un appel supplémentaire à la fonction QProcess::kill() est effectué.

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