IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Arrêter un Thread


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 67
    Par défaut Arrêter un Thread
    Bonjour, j'ai cree un thread qui execute un tache longue utilisant des acces à des DLLs. Ce thread est lance depuis mon application. Par contre je voudrais arreter mon thread à n'importe quel moment. Quand je regarde sur les forums, je me rends compte que les threads sont toujours en boucle, alors que moi c'est une tache continue, et parfois ma tache est longue et j'aimerais depuis mon application tuer arreter mon thread la ou il est . Commment faire?

  2. #2
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Salut,

    Regarde du côté de TerminateThread, tout simplement ;

    A+.

  3. #3
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Utilise Suspended := True pour faire une pause et Suspended := False pour le relancer.

  4. #4
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Il existe deux façons d'arrêter un thread : une propre et une bourrin. On peut comparer la méthode propre à envoyer un message de terminaison à un processus ; et la méthode bourrin à un kill d'un processus.

    La méthode propre consiste à appeler la méthode Terminate du thread. En même temps, l'exécution du thread doit régulièrement tester la valeur de sa propriété Terminated : si elle vaut True, il doit arrêter son traitement.

    La méthode bourrin consiste à utiliser l'API TerminateThread, comme l'a dit PadawanDuDelphi. Il faut y passer le handle du thread, récupérable par la propriété... Handle
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 67
    Par défaut
    oui mais moi je me trouve dans le cas ou je ne suis pas en boucle dans mon thread, je en continu voila mon problème

  6. #6
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Je dois avouer que j'arrive pas trop à comprendre, qu'est-ce que tu appelle fonctionner en continu?

    Un thread c'est juste un processus qui permet notamment de fonctionner en multi-tâche (windows se sert de thread constamment). La rotation des thread actif est gérer par le système d'exploitation, donc ce n'est pas toi, à priori, (sauf si tu joue sur sa priorité) qui détermine quel thread utilise le processus à un instant t précis et tu as toutes les chances d'avoir une rotation de tout tes processus actifs (y compris ceux de ton système d'exploitation, celui de ton executable Delphi, de Word si il est ouvert...).

    La seule chose que tu as a faire c'est de t'assurer de garder le handle du thread que tu as créer pour pouvoir agir dessus ultérieurement, mais c'est la seule contrainte que tu as.

    A+.

Discussions similaires

  1. Arrêter un thread en python ?
    Par fanou31 dans le forum Général Python
    Réponses: 7
    Dernier message: 23/06/2013, 18h15
  2. Réponses: 2
    Dernier message: 05/10/2006, 17h56
  3. [Thread] arrêter un thread
    Par melvar dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 10/04/2006, 18h06
  4. Réponses: 18
    Dernier message: 06/04/2005, 14h09
  5. Arrêter une Thread brutalement!
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 21h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo