Modifier ListView dans un thread secondaire
Bonjour,
Je travaille actuellement sur VB 2010 Express à créer un logiciel de données qui remplit une ListView.
L'interrogation est cyclique dans un thread secondaire et même si le programme fonctionne la solution ne me satisfait pas. Globalement, à chaque itération de la boucle, le programme efface le contenu du ListView via un invoke.
Code:
Me.TableLecture.Invoke(New Action(Sub() Me.TableLecture.Items.Clear()))
Et par la suite, les valeurs sont générées par la lecture.
Code:
1 2 3 4 5 6
| Dim item As ListViewItem
item = New ListViewItem({Id, Nom, Valeur, Unite})
If Me.TableLecture.InvokeRequired Then
Me.TableLecture.Invoke(New Action(Sub() Me.TableLecture.Items.Add(item)))
End If |
Du coup, on obtient un effet clignotant fortement désagréable pour celui qui surveille les informations affichées (le fichier texte est généré via un programme de communication indépendant).
Je cherche une solution pour modifier les lignes sans les effacer et gagner en lisibilité. Je pense qu'il faut passer par un Invoke ou Delegate ou les deux (je vois pas très bien la différence et je peine à trouver des tuto là dessus).
A savoir que dans le tableau {Id, Nom, Valeur, Unite} la valeur de Nom est unique et que je cherche à modifier Valeur. Id et Unite n'ont d'importance que pour le lecteur.
Merci d'avance pour l'attention accordé à ce message, n'hésitez pas a me demandé plus d'informations.