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 :

[VB.NET/2.0] Comment MAJ ListBox depuis un autre Thread ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Par défaut [VB.NET/2.0] Comment MAJ ListBox depuis un autre Thread ?
    Bonjour,
    Alors je lance une fonction d'une class dans un nouveau thread, qui contient des événements. Le prob c'est que j'ai besoin d'ajouter des items à une ListBox dans le code de mon événement, mais celui-ci n'est pas dans le meme thread que la form.
    J'ai chercher avec les Invoke et Delegate mais j'ai pas trop compris

    Merci beaucoup d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Par défaut
    C'est bon j'ai fini pas réussir pas moi même
    Voilà l'exemple qui ma sauver ^^ :

    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
    Imports System
    Imports System.Drawing
    Imports System.Windows.Forms
    Imports System.Threading
     
    Public Class MyFormControl
       Inherits Form
     
       Delegate Sub AddListItem(myString As String)
       Public myDelegate As AddListItem
       Private myButton As Button
       Private myThread As Thread
       Private myListBox As ListBox
     
       Public Sub New()
          myButton = New Button()
          myListBox = New ListBox()
          myButton.Location = New Point(72, 160)
          myButton.Size = New Size(152, 32)
          myButton.TabIndex = 1
          myButton.Text = "Add items in list box"
          AddHandler myButton.Click, AddressOf Button_Click
          myListBox.Location = New Point(48, 32)
          myListBox.Name = "myListBox"
          myListBox.Size = New Size(200, 95)
          myListBox.TabIndex = 2
          ClientSize = New Size(292, 273)
          Controls.AddRange(New Control() {myListBox, myButton})
          Text = " 'Control_Invoke' example "
          myDelegate = New AddListItem(AddressOf AddListItemMethod)
       End Sub 'New
     
       Shared Sub Main()
          Dim myForm As New MyFormControl()
          myForm.ShowDialog()
       End Sub 'Main
     
       Public Sub AddListItemMethod(myString As String)
          myListBox.Items.Add(myString)
       End Sub 'AddListItemMethod
     
       Private Sub Button_Click(sender As Object, e As EventArgs)
          myThread = New Thread(New ThreadStart(AddressOf ThreadFunction))
          myThread.Start()
       End Sub 'Button_Click
     
       Private Sub ThreadFunction()
          Dim myThreadClassObject As New MyThreadClass(Me)
          myThreadClassObject.Run()
       End Sub 'ThreadFunction
    End Class 'MyFormControl
     
    Public Class MyThreadClass
       Private myFormControl1 As MyFormControl
     
       Public Sub New(myForm As MyFormControl)
          myFormControl1 = myForm
       End Sub 'New
       Private myString As String
     
       Public Sub Run()
     
          Dim i As Integer
          For i = 1 To 5
             myString = "Step number " + i.ToString() + " executed"
             Thread.Sleep(400)
             ' Execute the specified delegate on the thread that owns
             ' 'myFormControl1' control's underlying window handle with
             ' the specified list of arguments.
             myFormControl1.Invoke(myFormControl1.myDelegate, New Object() {myString})
          Next i
     
       End Sub 'Run
    End Class 'MyThreadClass

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

Discussions similaires

  1. Acceder a une listbox depuis d'autre form avec une class
    Par NazOok dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/05/2011, 11h16
  2. Tween déclaré dans une fonction, comment l'arrêter depuis une autre fonction?
    Par leMich dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 04/09/2009, 07h12
  3. Threads. Peut-on appeler la méthode d'un thread depuis un autre thread ?
    Par Pierre8r dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 05/12/2008, 11h48
  4. CreateMDIWindow depuis un autre thread
    Par DjiZ dans le forum Windows
    Réponses: 2
    Dernier message: 03/12/2008, 10h01
  5. Réponses: 3
    Dernier message: 19/03/2008, 09h38

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