Attendre tant que l'etat d'un textbox reste inchangé
Bonjour,
Dans le cadre d'un projet de communication série avec un routeur, j'ai besoin d'envoyer une chaine sur le port COM et attendre la réponse du routeur pour pouvoir analyser celle-ci. L'émission/réception fonctionne, quand le programme reçoit des informations sur le port COM sa déclenche un événement et insère le texte reçu dans un TextBox.
Seulement je suis confronté à un problème, mon TextBox n'est pas encore mis à jour que le programme analyse déjà le TextBox. Donc je cherche à faire patienter le programme jusqu'à ce que le TextBox ait changé. J'ai bien tenté un Thread.sleep(100) mais sa ne fonctionne pas. Je pense que la solution doit se trouver du coté du multi-threading mais je ne comprend pas vraiment comment implémenter ceci dans mon programme.
Voici mon code complet :
Code:
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 31 32 33 34 35
| Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CheckForIllegalCrossThreadCalls = False
AddHandler SerialPort1.DataReceived, AddressOf SerialPort1_DataReceived
Try
SerialPort1.Open()
Catch ex As Exception
MsgBox("Impossible d'ouvrir le port COM")
End Try
End Sub
Public Sub send(ByVal texte As String)
SerialPort1.Write(texte)
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
If SerialPort1.IsOpen = True Then
Read()
End If
End Sub
Private Sub Read()
If SerialPort1.IsOpen Then
Dim data As String = SerialPort1.ReadExisting()
Me.RichTextBox1.Text += data
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
send(vbLf)
'Attendre que RichTextBox.text change avant de continuer
End Sub
End Class |
Merci d'avance pour votre aide :zoubi: