Bonjour à tous,

je fais une appli qui à un certains moment parcours une ListView une très grosse ListView et qui exécute une fonction pour chaque élément de la liste, et sa fait un peu freezer l'interface qraphique.

J'ai donc décider d'utilisé un backgroundWorker (thread) mais j'ai un peu du mal à le mettre en place (j'aime pas les threads ), j'ai une erreur car je tente d'accéder à une valeur d'un autre thread et bon je vois pas comment faire autrement.

Voilà le code, bon c'est pas super propre

En gros j'aimerais que le clique sur ce bouton passe en backgroundWorker

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
 
Private Sub B_AppliQuota_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_AppliQuota.Click
 
        If Lv_SansQuota.SelectedItems.Count = 1 Then
            MsgBox(Lv_SansQuota.SelectedItems.Item(0).SubItems(0).Text)
            Dim objet = CreateObject("Scripting.FileSystemObject")
            Dim fichier = objet.GetFolder(Lv_SansQuota.SelectedItems.Item(0).SubItems(0).Text)
            Dim taille = (fichier.Size / 1024) / 1024
            AddQuota(Lv_SansQuota.SelectedItems.Item(0).SubItems(0).Text, taille * Integer.Parse(tb_Pourcentage.Text) / 100 + taille) 'taille * Integer.Parse(tb_Pourcentage.Text) / 100 + taille
 
        Else
            Using sr5 As StreamReader = File.OpenText("C:\Resultat.txt")
                Dim input3 As String
                input3 = sr5.ReadLine()
                While Not input3 Is Nothing
                    Dim objet, fichier
                    objet = CreateObject("Scripting.FileSystemObject")
                    fichier = objet.GetFolder(input3)
                    Dim taille = (fichier.Size / 1024) / 1024
                    If taille = 0 Then
                        AddQuota(input3, 100)
                    Else
                        AddQuota(input3, taille * Integer.Parse(tb_Pourcentage.Text) / 100 + taille)
                    End If
                    input3 = sr5.ReadLine()
                End While
            End Using
        End If
        B_SearchUser.PerformClick()
    End Sub

Merci à tous