Option Strict On Public Class Form1 'thread à lancer Dim t As Threading.Thread 'délégué avec son paramètre string Delegate Sub DelegueClick(ByVal Texte As String) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'ajout d'éléments ListView1.Items.Add("titi") ListView1.Items.Add("toto") ListView1.Items.Add("tata") End Sub Private Sub ListView1_ItemSelectionChanged(ByVal sender As Object, ByVal e As ListViewItemSelectionChangedEventArgs) Handles ListView1.ItemSelectionChanged Label1.Text = "0" 'si le thread existe et qu'il est actif, on le stoppe If t IsNot Nothing Then If t.IsAlive Then t.Abort() End If t = Nothing 'on lance un nouveau thread (en lui demandant d'exécuter la procédure Job) t = New Threading.Thread(AddressOf Job) 'remarque : la méthiode Start autorise le passage d'un paramètre objet utilisable ensuite dans le thread t.Start() End Sub Private Sub Job() Dim x As Integer 'simulation d'un calcul long et pénible ... Do Threading.Thread.Sleep(1000) 'on peut vouloir afficher des informations comme des resultats de calculs pendant l'exécution du thread If x 2 Or x 5 Or x = 8 Then 'exemple d'invocation d'un délégué (opérations inter-threads) 'ce délégué doit exécuter la procédure ItemClick 'on peut passer un ou plusieurs paramètres au délégué ici je passe x (en string) If Me.InvokeRequired Then Me.Invoke(New DelegueClick(AddressOf ItemClick), x.ToString) End If End If x += 1 Loop End Sub 'procédure appelée par le délégué avec le paramètre string que l'on peut afficher dans le label Private Sub ItemClick(ByVal Texte As String) Label1.Text = Texte End Sub End Class
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPublic MaBoucle as boolean
Comme je l'ai dit, c'est lorsque je sélectionne une ligne particulière que la boucle s'active (et donc que maboucle prend la valeur "true")
Public MaBoucle as boolean
le problème ne vient sûrement pas de cette variable
Private Sub ListView1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.Click If ListView1.SelectedItems(0).Text = "JeLanceLaBoucle" then MaBoucle = True Boucle() Else MaBoucle = False Exit Sub end if End Sub 'Dans un module : Public MaBoucle as Boolean Sub Boucle () Do while MaBoucle = True 'Instructions diverses My.Application.DoEvents() Loop End Sub
Private Sub ListView1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.Click maboucle = Not maboucle Do While maboucle = True ' .... ce que tu veux My.Application.DoEvents() Loop End Sub
Private Sub ListView1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.Click msgbox "Test" End Sub
maboucle = Not maboucle Do While maboucle = True Label1.Caption = "ccc" DoEvents Loop Label1.Caption = ""
Do While maboucle = True Label1.Caption = "ccc" DoEvents Loop Label1.Caption = ""
ListView.Click...... Boucle() msgbox "test"
Mais une des lignes de ma Listview lance une boucle, qui ne doit pas s'arrêter tant que je n'ai pas à nouveau sélectionné