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 :

Comment stopper un thread ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Par défaut Comment stopper un thread ?
    Bonjour

    J'ai hérité d'un code VB que je dois modifier. Le code crée et démarre un Thread (sur un serveur dans ce cas) dans une boucle infinie, mais il n'y a pas de procédure d'arrêt du thread dans le module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Imports System.Threading
     
    Module Module1
        Sub Main()
            Dim fnLib As New functionLibrary
            fnLib.WriteLog("OnStart : Begin")
            ' === 
            ' === Ensure our registry has been set up
            ' === 
            Dim dbConnString As String = fnLib.getConfigValue("dbConnectionString")
            If Len(Trim(dbConnString)) < 1 Then
                fnLib.WriteLog("smWEBservice is incorrectly configured.  No database connection string specified in the cfg file.")
            Else
                Dim fred As Threading.Thread
                Dim smMain As New smWEBservice_main
                fred = New Thread(AddressOf smMain.beginProtectedLoop)
                fred.IsBackground = True
                fnLib.WriteLog("OnStart : Starting main thread")
                fred.Start()
                fnLib.WriteLog("OnStart : Complete")
            End If
            ' === 
            ' === Loop forever (all processing is in the fred thread)
            ' === 
            While True
                System.Threading.Thread.Sleep(10000)
            End While
        End Sub
    End Module
    Comment puis-je "tuer" le Thread ?

    Merci

    Lena

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 129
    Par défaut
    Salut,

    Je ne sais pas dans quel condition tu veux stopper ton thread (timeout, ou sur action). Sur action tu peux faire quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If monthread.IsAlive Then
           monthread.Abort()
    End If
    Sinon si tu veux quelque chose qui ressemble plus à un timeout regarde la propriété JOIN du thread. Cela te permet de définir un temps d'attende. Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    IF monthread.join(500) then
     'Executé dans les temps demandé
    Else
     'Temps dépassé on arrête tout
    End

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Par défaut
    Merci steelidol.

    Je vais essayer la solution Action. J'espère arriver à déloger ce thread !

    Lena

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

Discussions similaires

  1. Comment stopper un thread qui fait des appels natifs ?
    Par khayyam90 dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 04/01/2013, 10h30
  2. Réponses: 18
    Dernier message: 06/04/2005, 14h09
  3. Réponses: 17
    Dernier message: 19/10/2004, 09h05
  4. [Thread] comment arreter un thread qui execute une methode b
    Par Cyber@l dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 04/08/2004, 10h51
  5. comment stoper 1 thread d'arrière-plan
    Par ms91fr dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2003, 17h46

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