Attendre sans bloquer l'application
Bonjour,
Je vous expose mon petit problème.
Mon application communique avec une autre application. Par un simple clic sur un bouton j'envoie un ordre à l'application qui doit me retourner une information dès que cette ordre est réalisé.
Ceci se fait avec le simple code ci-dessous
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
Try
Dim ordre As String
Dim recu As String
TextBox19.Text = ""
ordre = TextBox18.Text
recu = objArduino.CommandString(ordre, False)
TextBox19.Text = recu
Catch ex As Exception
MessageBox.Show("Problème connexion avec l'Arduino.", "Arduino", MessageBoxButtons.OK, MessageBoxIcon.None)
End Try
End Sub |
Cela fonctionne sauf que :
- en attendant la réponse (pour les plus courtes 1 à 2 secondes) mon appli est bloquée et cela je ne le voudrais pas ;
- pour certaines réponses supérieures à 5 secondes, j'ai ma messageBox qui s'affiche car le délai de réponse est trop long (si je retire le Try, j'ai le message d'erreur Timed out waiting for received data).
Ce que je voudrais c'est que l'attente de la réception de l'information se fasse tranquillement pénard dans son coin et que je puisse utiliser librement mon appli. Lorsque l'info arrive, elle s'affiche dans la textbox.
J'ai lu que cela semble possible mais je n'y comprend rien. Entre les thread, les invoke, les delegate et backgrondworker je ne sais pas par où commencer.
Donc voila, je viens chercher de l'aide.
Merci