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 :

Fermer un thread avant de le redemarrer ?


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 Fermer un thread avant de le redemarrer ?
    Bonjour,

    J'ai un thread qui tourne pour la réception de data via le port série. dans cette procedure j'ai un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Sub Readdatathread()
    While StopThreadReadData = False
     
    'code de lecture de mon port serie et d'actualisation de mes variables globales
     
    End While
    End Sub
    Je lance mon thread grace à ce bout de code dans une procedure autre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public thread1 As New Threading.Thread(AddressOf Readdatathread) 'declare le thread
     
    Private Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem5.Click
     
    thread1.Start()
    thread1.Priority = Threading.ThreadPriority.Highest
    End Sub
    Je me suis dit, si je place un bout de code avant mon thread1.Start()
    tel que le suivant mon thread devrait se terminer et je devrai pouvoir le relancer mais ça plante pourquoi ? sinon comment faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    StopThreadReadData = True
    wait(400)
    StopThreadReadData = False

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    une fois un thread terminé, il n'est plus utilisable, il faut refaire le new et le start

    donc le mieux c'est de ne pas faire le new dans la variable, mais dans une méthode de démarrage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if thread is nothing orelse thread.isalive = false then
      thread = new thread(addressof 
      thread.start
    end if
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  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
    Ohhhhhh d'accord je fait un petite test

  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
    j'ai un soucis avec le thread.isalive = false ?

    Erreur 1 'isalive' n'est pas un membre de 'System.Threading.Thread'
    En même temps je suis sous compact framework 3.5 ! a quoi correspond cette verification ?

    Merci encore

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    isalive sur le framework normal retourne true si l'exécution du thread est en cours
    à la sortie de la sub, le thread n'est plus isalive

    il doit y avoir d'autres moyens de le savoir mais je ne connais pas le CF (un avec booléen tu pourrais t'en tirer aussi)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    il doit y avoir d'autres moyens de le savoir mais je ne connais pas le CF (un avec booléen tu pourrais t'en tirer aussi)
    En CF, pas vraiment car le ThreadState n'existe pas non plus.
    Le plus simple est que le thread se signale sur un objet de synchro en fin d'exécution.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/01/2011, 18h12
  2. Comment fermer une Tform avant meme qu'elle s'affiche??
    Par Jayceblaster dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 17/05/2006, 11h34
  3. Réponses: 6
    Dernier message: 11/05/2006, 16h00
  4. Réponses: 6
    Dernier message: 27/10/2005, 12h58
  5. Réponses: 3
    Dernier message: 11/02/2004, 12h50

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