Ich verwende eine While-Schleife, die eine bestimmte Anzahl von Zyklen (1-576) basierend auf einem von einem Benutzer eingegebenen Wert wiederholt. Es wird aktiviert, indem der Benutzer auf einen "Start" -Knopf klickt, aber ich möchte, dass es mit der "Escape" -Taste abgebrochen werden kann.Eine While-Schleife vorzeitig abbrechen
Wenn jedoch die Schleife läuft, kann das Programm keine Tasten drücken.
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
Meine Schleife
Private Sub RUNLOOP()
While loops >= 1
' my code that runs in the loop
loop = loop - 1
End While
End Sub
Während die Schleife meine Tastenanschläge registrieren nicht ausgeführt wird, andernfalls registrieren sie in Ordnung.
Dies ist eine schlechte Idee in .NET. Sie müssen es nicht tun, wenn Sie die BackGroundWorker-Klasse haben, mit der so einfach zu arbeiten ist, und dies kann auch zu Reentrancy-Problemen führen. -1 –
Ich verstehe, dass herkömmliche Design-Praktiken in .Net dies eine schlechte Idee machen, aber in der Kontext dieser Frage ist es die richtige Antwort. Die Alternative besteht darin, ihn bei einer vollständigen Neugestaltung seiner Bewerbung zu unterstützen. Willst du dich freiwillig dafür melden? –
Ich wusste nicht, dass das Hinzufügen eines BackGroundWorkers und das Refactoring einer einzelnen Methode ein "vollständiges Redesign einer (einer) Anwendung" darstellt. Das OP fragte, wie man die Benutzeroberfläche am Leben erhält, und dies ist eine schlechte (faule) Lösung. –