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

Windows Forms Discussion :

Multithreading envoi données aux thread


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut Multithreading envoi données aux thread
    bonjour,
    j'ai fait le code suivant (un peu simplifié):
    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
     
    Sub Main()
            Dim cc As New CompressClass
    For index1 As Integer = 0 To 9
                    For index As Integer = 0 To 9
                        Dim pathtemp As String = "img" & index1 & index
                             pathimg.Add(pathtemp)                
                                Dim data As ThreadDataCompress
                                data = New ThreadDataCompress(pathimg)
                                ThreadPool.QueueUserWorkItem(AddressOf cc.compress, 
    data)
    end sub
    Public Class ThreadDataCompress
        Public _sourceDir As List(Of String)
        Sub New(ByVal sd As List(Of String)
     
            _sourceDir = sd
         End Sub
     
    End Class
     
    Public Class CompressClass
        Public Shared nbrethread As Integer
        Sub compress(ByVal ob As Object)
            Interlocked.Increment(nbrethread)
            Dim ddata As ThreadDataCompress = DirectCast(ob, ThreadDataCompress)
            For Each dir As String In ddata._sourceDir
               Console.WriteLine(dir)
            Next
    End Sub
    End Class
    le problème et que l'enumeration de ma list ddata._sourceDir plante car ma variable est changé en cours de lecture.
    j'en déduis qu'un de mes thread écrit sur mes vaariables alors que j'intencie ThreadDataCompress avant chaque appelle d'un thread ils devraient travailler idépendament sur des instances différentes?

    s'il vous plait aidez-moi!!

  2. #2
    Membre très actif
    Avatar de Cyrilange
    Profil pro
    Inscrit en
    Février 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 268
    Par défaut
    Je dirais qu'en règle général un thread ne doit pas modifier de valeurs extérieurs à son process. On passe les arguments au thread et celui-ci ne modifie les données que lorsqu'il a fini.

    Je te conseille d'utiliser un BackGroundWorker. Un petit exemple içi :
    http://cyrilhome.over-blog.net/article-13916520.html

  3. #3
    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
    En ce qui concerne le BGW :
    http://aspic.developpez.com
    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 !

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/12/2012, 04h17
  2. Réponses: 0
    Dernier message: 08/11/2010, 11h01
  3. Serveur multithreads, envoie données par socket
    Par Orci76 dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 15/07/2010, 17h44
  4. Envoi mail aux résultats d'une requête
    Par martonpylon12 dans le forum Access
    Réponses: 2
    Dernier message: 12/01/2006, 12h13
  5. [Debug]Donner des noms aux thread lors du débugage
    Par jeje99 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/12/2005, 16h49

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