Voici un exemple que j'ai trouvé sur le site de MSDN France par Pascal Belaud. Sur l'utilisation d'un objet Thread pour faire du multi threading. Vous pouvez d'ailleurs trouver sur le site de l'auteur une excellente suite de vidéos sur le .Net et en Français.
Code VB :
Vous remarquerez que l'auteur à utilisé des caractères accentués dans son exemple. Bien que cela semble techniquement possible. De grâce, ne fait jamais ça dans vos code si vous ne voulez pas de problème.
Vous remarquerez également l'utilisation d'un Delegate avec la méthode MAJLabel. Cette astuce permet de pouvoir modifier un composant graphique dans le Thread principal de l'application. Autrement cela n'aurait pas été possible car un Thread n'a pas le droit de modifier ce qui se passe dans un autre Thread.
Code VB :
Imports System.Threading Public Class FormMain Private monThread As Thread Private Sub ButtonDémarrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDémarrer.Click monThread = New Thread(AddressOf démarrage) monThread.Start() MessageBox.Show(Me, "Thread démarré", "Threading", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Private Sub démarrage() For index As Integer = 0 To 100000 MAJLabel(index) Thread.Sleep(0) Next End Sub Private Delegate Sub MAJLabelDelegate(ByVal index As Integer) Private Sub MAJLabel(ByVal index As Integer) If LabelValeur.InvokeRequired Then LabelValeur.Invoke(New MAJLabelDelegate(AddressOf MAJLabel), index) Return End If LabelValeur.Text = index.ToString() End Sub Private Sub ButtonArrêter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonArrêter.Click monThread.Abort() End Sub End Class
Vous remarquerez que l'auteur à utilisé des caractères accentués dans son exemple. Bien que cela semble techniquement possible. De grâce, ne fait jamais ça dans vos code si vous ne voulez pas de problème.
Vous remarquerez également l'utilisation d'un Delegate avec la méthode MAJLabel. Cette astuce permet de pouvoir modifier un composant graphique dans le Thread principal de l'application. Autrement cela n'aurait pas été possible car un Thread n'a pas le droit de modifier ce qui se passe dans un autre Thread.
Ecrit par: Rawheadrex, Le: 21/02/10
Dernièrement sur le forum
- 21/02 Test







