Option Strict On Public Class Form1 'je déclare un délégué pour gérer les opérations inter-thread Delegate Sub DelegueChangementTemperature(ByVal Valeur As Integer) 'je déclare ma thermistance Dim MaThermistance As Thermistance 'j'ajoute un label au formulaire pour visualiser les données Dim MonLabel As New Label With {.Parent Me, .AutoSize True, .Font = New Font("Arial", 20)} Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'j'instancie ma thermistance MaThermistance = New Thermistance 'je m'abonne à l'événement Température par la sub ChangementTemperatureThread AddHandler MaThermistance.Temperature, AddressOf ChangementTemperatureThread End Sub Private Sub ChangementTemperatureThread(ByVal Valeur As Integer) If Me.InvokeRequired Then 'si un événement inter-thread intervient, j'invoque une instance de mon délégué qui 'se chargera de transmettre l'info à la sub affichage Me.Invoke(New DelegueChangementTemperature(AddressOf ChangementTemperature), Valeur) Else 'sinon je passe directement l'info à la sub d'affichage ChangementTemperature(Valeur) End If End Sub Private Sub ChangementTemperature(ByVal Valeur As Integer) 'j'affiche la valeur dans mon label MonLabel.Text = Valeur.ToString End Sub End Class 'classe de la thermistance envoyant ses données depuis un thread toutes les 2 secondes Public Class Thermistance 'thread servant à ne pas freezer l'application Dim t As New Threading.Thread(AddressOf MaSub) 'déclaration de l'événement de température (vous devrez surement utiliser des Double plutot que des integers) Event Temperature(ByVal Degres As Integer) Sub New() 'démarrage du thread t.Start() End Sub Private Sub MaSub() 'ici on doit déclarer, initialiser et connecter un port rs232 par exemple... '... Do 'ici on commence à lire les données issues de la thermistance Threading.Thread.Sleep(2000) 'là, j'ai utilisé un simple délai avec un nombre aléatoire pour simuler une température entre 5 et 19° 'à remplacer par votre code d'acquisition des données de votre thremistance. Dim rd As New Random Dim TemperatureAleatoire As Integer = rd.Next(5, 19) 'là, j'envoi l'information par un événement 'bien sur il faut 'parser' les données surement en ASCII et transformer en degrés) RaiseEvent Temperature(TemperatureAleatoire) Loop End Sub End Class
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionle sleep freeze mais pas le timer ^^
Thread(AddressOf MaSub) signifie quoi en fait ?