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 :

Je patauge, a l´aide : Threads


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 29
    Par défaut Je patauge, a l´aide : Threads
    Bonjour,
    alors voila mon soucis :
    Je tourne en rond depuis des heures pour pouvoir faire afficher un message a la fin de l´execution d´un thread (en l`occurence un thread qui travaille sur une base de donnee). une fois le boulot fini je veux afficher un message ds ma form

    c´est vraiment pas gagne,je ne sais plus quoi faire a par n´importe quoi !

    je vous poste le code que j´ai essaye :

    Thread sur ma form (qui me permettra de gerer une barre de progression)

    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
    30
    31
    32
    33
    34
     
    Public Sub Thread()
            _thread = New Thread(AddressOf StartThread)
            _thread.Name = "main_thread"
     
            Try
                If (_thread.ThreadState = ThreadState.Unstarted) Then
                    _thread.Start() '  let's go
                End If
     
            Catch ex As Exception
                LogFactory.getInstance().logInfo(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, ex.Message.ToString())
            End Try
        End Sub
     
        Private Sub StartThread()
            Try
                '2: Mailing Adressen in VIS
                InfoBox.Items.Add("1 : Secure Mailing Adresse of VIS ...")
                InfoBox.Items.Add("2 : Deleting Mailing Adresse in VIS ...")
     
                key = CInt(objINI.Read("work", "MailingPart"))
                If key = 1 Then
                    InfoBox.Items.Add("Already Done ...")
                Else
                    db.FirstThread()
                    InfoBox.Items.Add("Done ...")
                End If
     
            Catch ex As Exception
                LogFactory.getInstance().logInfo(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, ex.Message.ToString())
            End Try
     
        End Sub
    puis le thread ds une classe qui bosse avec la bd

    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
     
    Public Sub FirstThread()
            _thread1 = New Thread(AddressOf StartThread)
            _thread1.Name = "thread1"
     
            Try
                If (_thread1.ThreadState = ThreadState.Unstarted) Then
                    _thread1.Start() '  let's go
                End If
     
            Catch ex As Exception
                LogFactory.getInstance().logInfo(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, ex.Message.ToString())
            End Try
        End Sub
     
        Private Sub StartThread()
            Try
                Secure_MailingAdresse()
                Delete_MailingAdresse()
            Catch ex As Exception
                LogFactory.getInstance().logInfo(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, ex.Message.ToString())
            End Try
     
        End Sub

    Merci de votre aide
    Brice

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 33
    Par défaut
    Ben tu peu mettre ton thread dans une classe et faire des événements pour communiquer avec l'extérieur.

    Exemple :
    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
     
    class monthread
     
      event sub progress(evolution as integer)
      event sub fin()
     
    sub excution()
     
           'code du thread 
           RaiseEvent progress(evolution)
     
     
           ' fin du travaille
           RaiseEvent fin()
     
     
    end sub
     
    end class

  3. #3
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 29
    Par défaut
    desole je comprends pas ce que tu veux dire.
    Brice

  4. #4
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Si tu veux voir l'evolution de ton eporation et la fin de ton opération utilise le BackGroundWorker qui possède 3 events :

    Utilisation du BackGroundWorker

    ++
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 29
    Par défaut
    J´avance ,j´avance
    J´ai resolu l´affaire avec les evenements:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    firstCase = New Database()
     
                t_secure = New Thread(AddressOf firstCase.Secure_MailingAdresse)
                t_secure.Start()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub EventHandler(ByVal stat As Integer) _
        Handles firstCase.ThreadSecure
     
            MsgBox("trop delire" & stat)
            'InfoBox.Items.Add("Done ... " )
     
        End Sub
    Trop bizarre,je me retrouve avec une erreur lorsque je veux acceder a un composant de ma forme :
    Cross-thread operation not valid: Control 'InfoBox' accessed from a thread other than the thread it was created on.

    tandis quavec une box ca marche ?

    Il est ou le probleme ?
    Merci .

  6. #6
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Normal on a pas le droit avec le Frmaework 2.0 d'acceder à un composant de sa Form dans un thread autre que le thread principal.

    Voila pourquoi je t'ai suggéré de regarder du coté du BacjGroundWorker qui règle ce problème (et bien d'autre) en autre !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

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

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28
  3. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

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