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

VB.NET Discussion :

relancer un Thread une fois mort ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut relancer un Thread une fois mort ?
    Bonjour,

    J'ai un thread qui une fois un boolean Public à True se termine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Public thread2 As Threading.Thread
        Public StopThreadSolenoidManagement As Boolean

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Public Sub SolenoidManagementThread()
     
            Do Until StopThreadSolenoidManagement = True
                ...'ici plein de code
            Loop
     
        End Sub
    Pour le lancer, j'utilise dans une procédure :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                        If Start.thread2 Is Nothing Then
                            Start.thread2 = New Threading.Thread(AddressOf Start.SolenoidManagementThread)
                            Start.thread2.Start()
                            Start.thread2.Priority = Threading.ThreadPriority.Normal
                        End If
    Malheureusement, ça ne fonctionne qu'une fois et ça ne me conviens pas vraiment ! j'ai vu que l'on peut mettre sur pause le thread mais dans mon cas, j'aimerai vraiment qu'il meurt et que je puisse le recréer mais comment faire. J'ai un peu cherché sur google mais je n'ai pas tout compris à vrai dire :/

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonjour,

    Je ne suis pas habitué de l'utilisation de thread mais je pense qu'en implémentant INotifyPropertyChanged sur votre StopThreadSolenoidManagement vous devriez arriver à mettre votre thread en pose sans le détruire

    Il ne suffirait plus qu'à déterminer la valeur de StopThreadSolenoidManagement et implémenter les actions à faire. Si = true, je redémare le thread et je fait ma boucle infinie, si = false, je met en pause le thread.

    N'ayant pas testé la solution, je ne peux vous assurer qu'elle fonctionne.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut
    Je vais regarder de ce coté là, je ne trouve pas vraiment d'autre solution. Je reviens après pour le feedback

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut
    Voilà ce que j'ai fait, ça fonctionne assez bien, je ne tue jamais mon thread, je dois réinitialiser les variables de mon code du thread par contre histoire que ça redemarre parfaitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Public Sub SolenoidManagementThread()
            Dim toggle As Boolean = False
            Do While 1 = 1
                wait(200)
                Do Until StopThreadSolenoidManagement = True
                    ...'pas mal de code
                Loop
     
            Loop
        End Sub

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut
    J'ai remplacé do while 1=1 par un boolean global pour tuer le thread avant de quitter l'application c'est un peu plus propre comme ça. Bonne année à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment démarrer mon Thread une fois mort ?
    Par alextomas dans le forum Concurrence et multi-thread
    Réponses: 13
    Dernier message: 08/07/2011, 21h33
  2. Threading qui ne passe qu'une fois
    Par Daxou31 dans le forum C#
    Réponses: 2
    Dernier message: 30/07/2009, 20h20
  3. Il était une fois 3 threads: A, B et C . . .
    Par raphael_kindt dans le forum C++
    Réponses: 17
    Dernier message: 07/04/2008, 21h57
  4. Comment attendre que tous les thread lancés soient morts pour lancer une action.
    Par rgesnot dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 31/03/2007, 20h27
  5. [Thread]run une fois et plus apres
    Par maxvador dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 29/12/2004, 15h31

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