Bonjour à tous,
je fais une appli qui à un certains moment parcours une ListView une très grosse ListViewet 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
Partager