J'utilise une boucle While qui boucle un certain nombre de cycles (1-576) en fonction d'une valeur entrée par un utilisateur. Il est activé par l'utilisateur en cliquant sur un bouton "Démarrer", mais je voudrais qu'il puisse être annulé en utilisant, de préférence, la touche "Echap". Cependant, lorsque la boucle est en cours, le programme ne peut reconnaître aucune pression sur une touche.Annulation prématurée d'une boucle While
Private Sub OnGlobalKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles kh.KeyDown
lblInput.Text = String.Format("'{0}' Code:{1}", e.KeyCode, CInt(e.KeyCode).ToString())
If e.KeyCode = CType(27, Keys) Then
count = 0
loops = 0
End If
End Sub
Ma boucle
Private Sub RUNLOOP()
While loops >= 1
' my code that runs in the loop
loop = loop - 1
End While
End Sub
Alors que la boucle est en cours d'exécution mes n'enregistrent pas les pressions de touche, sinon ils enregistrent bien.
Ceci est une mauvaise idée dans .NET. Vous n'avez pas besoin de le faire quand vous avez la classe BackGroundWorker qui est si facile à utiliser, et cela peut également conduire à des problèmes de réentrance -1 –
Je comprends que les pratiques de conception classiques dans .Net en font une mauvaise idée, mais dans le contexte de cette question, c'est la bonne réponse. L'alternative est de l'assister dans une refonte complète de sa demande. Vous voulez faire du bénévolat pour ça? –
Je ne savais pas que l'ajout d'un BackGroundWorker et la refactorisation d'une seule méthode constituaient une "refonte complète de (une) application". Le PO a demandé comment maintenir l'interface utilisateur en vie et c'est une mauvaise solution (paresseuse). –