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 :

Problème vb et thread


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 3
    Points
    3
    Par défaut Problème vb et thread
    Bonjour,
    Je pensais pouvoir maitriser Vb et le côté multithreading mais ça fait deux jours que je n'arrive pas à résoudre un problème.J'utilise une liaison serie pour lire mes trames et après je dois les tracer sur une courbe chart.La récupération des données est bonne et même la tracée. Afin de donner plus de rapidité à mon programme, j'ai décidé d'utiliser le thread.Au début j'avais deux threads mais je l'ai réduit à un seul pour déterminer la source du problème mais hélas toujours la même.Il m'affiche ce message :L'exception InvalidOperationException n'a pas été gérée , La collection a été modifiée ; l'opération d'énumération peut ne pas s'exécuter.

    J'ai mit ce paramètre à false pour permettre l'opération inter thread, côté variable. Me.CheckForIllegalCrossThreadCalls = False.
    Je vous donne mon code.

    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
            While i < 10
     
                fncanRead(canHandle, cmsg_Message, 1)
                ' MsgBox("Id: " & cmsg_Message.l_id)
                If cmsg_Message.l_id = "614" Then
                    Hour = Microsoft.VisualBasic.DateAndTime.Hour(Now)
                    Minutes = Microsoft.VisualBasic.DateAndTime.Minute(Now)
                    Second = Microsoft.VisualBasic.DateAndTime.Second(Now)
     
     
                    tableau111(i) = cmsg_Message.by_data_2 + cmsg_Message.by_data_3 * 256
                    tableau222(i) = cmsg_Message.by_data_4 + 256 * cmsg_Message.by_data_5
                    tableautempss(i) = Hour & ":" & Minutes & ":" & Second
                    i += 1
                End If
                If i = 10 Then
                    PwmLiants = tableau111
                    VitPompLiants = tableau222
                    tempsss = tableautempss
                    Tracer(1, PwmLiants, 2, tempsss)
                    i=10
                End If
     
            End While

  2. #2
    Membre éclairé Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 667
    Points
    667
    Par défaut
    Citation Envoyé par adamasegou Voir le message
    [...] Il m'affiche ce message :L'exception InvalidOperationException n'a pas été gérée , La collection a été modifiée ; l'opération d'énumération peut ne pas s'exécuter. [...]
    Salut,
    Je crois que cela ne vient pas du thread mais que cela vient du fait que tu ne peux pas enumerer les éléments d'une collection si pendant l'énumération tu la modifies.
    Merci de ainsi que d'utiliser les boutons et

  3. #3
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par r.morel Voir le message
    Salut,
    Je crois que cela ne vient pas du thread mais que cela vient du fait que tu ne peux pas enumerer les éléments d'une collection si pendant l'énumération tu la modifies.
    Effectivement il est là le problème.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par r.morel Voir le message
    Salut,
    Je crois que cela ne vient pas du thread mais que cela vient du fait que tu ne peux pas enumerer les éléments d'une collection si pendant l'énumération tu la modifies.
    Vous êtes d'accord avec moi que je remplis d'abord mon tableau et après je l'affecte à un object en suite je le trace. Ce qui veut dire que je ne modifie pas en même temps que je lisse.

    Citation Envoyé par adamasegou Voir le message
    Vous êtes d'accord avec moi que je remplis d'abord mon tableau et après je l'affecte à un object en suite je le trace. Ce qui veut dire que je ne modifie pas en même temps que je lisse.
    Dans la condition if i=10,j'initialise i à 0 au lieu.C'est une erreur de frappe en mettant le code sur le forum.

  5. #5
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par adamasegou Voir le message
    Vous êtes d'accord avec moi que je remplis d'abord mon tableau et après je l'affecte à un object en suite je le trace. Ce qui veut dire que je ne modifie pas en même temps que je lisse.
    On n a pas le reste de ton code sous les yeux donc difficile d être d accord entre ce que tu dis et fais

    Breff... si tu fais toutes ses opérations dans ta boucle while alors ça ne peut pas aller ...

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Pourquoi ça ne peut pas aller en mettant toutes ces opérations dans la boucle while?

  7. #7
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par adamasegou Voir le message
    Pourquoi ça ne peut pas aller en mettant toutes ces opérations dans la boucle while?
    Parce que tu te situes dans la boucle de traitement de ton tableau...dixit ta levée d exception

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    Parce que tu te situes dans la boucle de traitement de ton tableau...dixit ta levée d exception
    On a forcement besoin d'un try catch?Je pense que je suis un peu perdu

  9. #9
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Vous êtes d'accord avec moi que je remplis d'abord mon tableau et après je l'affecte à un object en suite je le trace. Ce qui veut dire que je ne modifie pas en même temps que je lisse.
    Ce n est pas exactement ce que tu fais car ton affectation de tableau se situe dans la boucle while ainsi que le tracé et l affectation à ton objet.
    Il faut décomposer tout ca en travaillant avec d autres variables !
    Ceci dit c est difficile de dire quoique ce soit d autre puisqu on ignore le contexte.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    J'ai travaillé avec d'autres variables mais sans succès, l'application continue à rouler mais je ne vois pas la courbe, par contre dans la fonction tracer si je mets un message box, il m'affiche la courbe.
    J'ai besoin d'être dans une boucle while infinie afin de tourner en permanence.L'objectif c'est l'acquisition de 10 valeurs et on trace ces 10 valeurs et après acquisition d'une autre 10 valeurs et tracé, ainsi de suite.
    J'espère que vous m'avez compris.
    J'ai procédé comme ça :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
         While a <= 1000
     
                Console.WriteLine("Acquisition numéro: " & r)
                Hour = Microsoft.VisualBasic.DateAndTime.Hour(Now)
                Minutes = Microsoft.VisualBasic.DateAndTime.Minute(Now)
                Second = Microsoft.VisualBasic.DateAndTime.Second(Now)
     
     
                'ChargeParametres()
     
     
                fncanRead(canHandle, cmsg_Message, 1)
                If cmsg_Message.l_id = "614" Then
                    Excel_VitessePompeLiant_DL(r) = cmsg_Message.by_data_2 + cmsg_Message.by_data_3 * 256
                    Excel_PwmLiant_DL(r) = cmsg_Message.by_data_4 + 256 * cmsg_Message.by_data_5
                    Console.WriteLine("Vitesse Pompe: " & Excel_VitessePompeLiant_DL(r))
                    Console.WriteLine("PWM: " & Excel_PwmLiant_DL(r))
                    temps(r) = Hour & ":" & Minutes & ":" & Second
                    r += 1
                    a += 1
                    Label1.Text = Excel_VitessePompeLiant_DL(r)
                End If
                If r = "10" Then
                    Try
                        For i As Integer = 0 To 9
                            intermediaire(i) = Excel_VitessePompeLiant_DL(i)
                            intermediaire1(i) = temps(i)
                        Next
                        verif = intermediaire
                        verif1 = Excel_PwmLiant_DL
                        verif2 = temps
                        j = j + 1
     
                        Tracer(1, verif, 1, verif2)
                        ' Thread.Sleep(5000)
                        ' Console.WriteLine("Boucle parfaite")
                        ' Console.WriteLine("#####################################################################")
                        'Console.WriteLine("#####################################################################")
                        'Console.WriteLine("#####################################################################")
                        r = 0
     
                    Catch ex As Exception
     
                        MsgBox("Erreur ")
     
                    End Try
     
     
                End If
     
     
                Sleep(1000)
     
     
     
            End While

  11. #11
    Membre éclairé Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 667
    Points
    667
    Par défaut

    Déjà, commence par utiliser la balise code car c'est juste illisible.

    Citation Envoyé par adamasegou Voir le message
    J'ai besoin d'être dans une boucle while infinie afin de tourner en permanence.L'objectif c'est l'acquisition de 10 valeurs et on trace ces 10 valeurs et après acquisition d'une autre 10 valeurs et tracé, ainsi de suite.
    Je pense que ce n'est pas la bonne solution. Essaye de voir du coté du Timer.
    Merci de ainsi que d'utiliser les boutons et

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Je connais le Timer mais le problème avec ce dernier, il faut le régler en milleseconde alors que dans mon cas je ne sais pas quel temps il faut pour l'acquisition et la tracée car cela dépend du réseau.
    Le problème peut il venir du fait que la boucle se situe dans la fonction button-click ?
    Sinon je veux vraiment faire du multitâche car pour moi c'est l'idéal.

  13. #13
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par adamasegou Voir le message
    Je connais le Timer mais le problème avec ce dernier, il faut le régler en milleseconde alors que dans mon cas je ne sais pas quel temps il faut pour l'acquisition et la tracée car cela dépend du réseau.
    Si tu utilises une liaison série pour récupérer tes trames il y a bien possibilité de calculer tout ca pour déclencher le timer ou l'arrêter quand il faut ????

    Citation Envoyé par adamasegou Voir le message
    Le problème peut il venir du fait que la boucle se situe dans la fonction button-click ?
    Sinon je veux vraiment faire du multitâche car pour moi c'est l'idéal.
    En fait comme tu le dis plus haut, il y a un traitement dans une boucle infinie et en plus ce traitement se situe dans l'event Click d'un bouton !
    Ce qui veut dire que tu dois impérativement déléguer ce traitement un un autre thread de manière à ce que ton appli soit réactive et ne gèle pas.....

    PS1 : décores ton code des balises CODE que ce soit plus lisible

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Code vb : 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
    35
    36
    37
    While i < 10
     
                fncanRead(canHandle, cmsg_Message, 1)
                ' MsgBox("Id: " & cmsg_Message.l_id)
                If cmsg_Message.l_id = "614" Then
                    Hour = Microsoft.VisualBasic.DateAndTime.Hour(Now)
                    Minutes = Microsoft.VisualBasic.DateAndTime.Minute(Now)
                    Second = Microsoft.VisualBasic.DateAndTime.Second(Now)
     
     
                    tableau111(i) = cmsg_Message.by_data_2 + cmsg_Message.by_data_3 * 256
                    tableau222(i) = cmsg_Message.by_data_4 + 256 * cmsg_Message.by_data_5
                    tableautempss(i) = Hour & ":" & Minutes & ":" & Second
                    TextBox1.Text = "PWM: " & tableau111(i)
                    i += 1
                End If
                If i = 10 Then
                    Try
                        For k As Integer = 0 To 9
                            inttableau(k) = tableau222(k)
                            inttabheure(k) = tableautempss(k)
     
     
                        Next
     
                        VitPompLiants = inttableau
                        tempsss = inttabheure
                        Tracer(1, VitPompLiants, 2, tempsss)
                        i = 0
                    Catch ex As Exception
                        MsgBox("Erreur")
                    End Try
                    'PwmLiants = tableau111
     
                End If
                'Thread.Sleep(100)
           End While
    Je l'ai mis dans un autre thread, elle fait environ 28 minutes avant de planter.C'est vrai que je communique avec le port serie mais il est encapsulé par un api, Il transforme la communication série en communication can.

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    Si tu utilises une liaison série pour récupérer tes trames il y a bien possibilité de calculer tout ca pour déclencher le timer ou l'arrêter quand il faut ????



    En fait comme tu le dis plus haut, il y a un traitement dans une boucle infinie et en plus ce traitement se situe dans l'event Click d'un bouton !
    Ce qui veut dire que tu dois impérativement déléguer ce traitement un un autre thread de manière à ce que ton appli soit réactive et ne gèle pas.....

    PS1 : décores ton code des balises CODE que ce soit plus lisible
    Bonjour,
    J'ai changé l'architecture en découpant la partie récupération et la partie tracée courbe.Mais c'est toujours le même problème.Le voici le code:

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    Private Sub courbe()
            Dim i, ml As Integer
     
            Dim tableau111(1000), tableau222(1000) As Integer
            ml = 1
     
            With cmsg1
                .l_id = 616
                .by_len = 1
                .by_extended = 0
                .by_remote = 0
                .by_data_0 = 10
                .by_data_1 = 0
                .by_data_2 = 0
                .by_data_3 = 0
                .by_data_4 = 0
                .by_data_5 = 0
                .by_data_6 = 0
                .by_data_7 = 0
            End With
     
            With cmsg2
                .l_id = 607
                .by_len = 1
                .by_extended = 0
                .by_remote = 0
                .by_data_0 = 50
                .by_data_1 = 0
                .by_data_2 = 0
                .by_data_3 = 0
                .by_data_4 = 0
                .by_data_5 = 0
                .by_data_6 = 0
            End With
            fncanConformedTransmit(canHandle, cmsg1, 1)
            fncanConformedTransmit(canHandle, cmsg2, 1)
            Dim Hour As Integer = Microsoft.VisualBasic.DateAndTime.Hour(Now)
            Dim Minutes As Integer = Microsoft.VisualBasic.DateAndTime.Minute(Now)
            Dim Second As Integer = Microsoft.VisualBasic.DateAndTime.Minute(Now)
     
            While i < 1000
     
                fncanRead(canHandle, cmsg_Message, 1)
     
                If cmsg_Message.l_id = "614" And verificationbool Then
                    Hour = Microsoft.VisualBasic.DateAndTime.Hour(Now)
                    Minutes = Microsoft.VisualBasic.DateAndTime.Minute(Now)
                    Second = Microsoft.VisualBasic.DateAndTime.Second(Now)
     
     
                    tableau111(i) = cmsg_Message.by_data_2 + cmsg_Message.by_data_3 * 256
                    tableau222(i) = cmsg_Message.by_data_4 + 256 * cmsg_Message.by_data_5
                    tableautempss(i) = Hour & ":" & Minutes & ":" & Second
     
                    TextBox1.Text = "PWM: " & tableau111(i) & vbNewLine & "Vitesse à pompe: " & tableau222(i) & vbNewLine & "Acquisition: " & ml
                    ml += 1
                    i += 1
     
                End If
                If i = 10 And verificationbool Then
                    Try
                        For k As Integer = 0 To 9
                            inttableau(k) = tableau222(k)
                            inttabheure(k) = tableautempss(k)
                        Next
                        tempsobject = inttabheure
                        VitPompLiants = inttableau
     
                        mutex1.Set()
                        verificationbool = False
     
                        i = 0
     
     
                    Catch ex As Exception
                        MsgBox("Erreur")
                    End Try
     
     
                End If
     
            End While
        End Sub
     
        Private Sub dessiner()
            While 1
                mutex1.WaitOne()
                verificationbool = False
                verificationlecture = False
                Tracer(1, VitPompLiants, 1, tempsobject)
                lm += 1
                TextBox2.Text = "Courbe numéro: " & lm
                mutex1.Reset()
                verificationbool = True
                verificationlecture = True
            End While
     
     
        End Sub

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/08/2006, 15h39
  2. problème sur les threads et les sémaphores
    Par ramislebob dans le forum Windows
    Réponses: 1
    Dernier message: 29/06/2006, 11h52
  3. [C#] Problème sur un Thread
    Par bisounux dans le forum Windows Forms
    Réponses: 7
    Dernier message: 27/04/2006, 20h43
  4. Problème dans un thread
    Par BNS dans le forum MFC
    Réponses: 3
    Dernier message: 23/03/2006, 14h21
  5. Réponses: 5
    Dernier message: 10/05/2005, 10h22

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