Я использую цикл While, который зацикливает определенное количество циклов (1-576) на основе значения, введенного пользователем. Он активируется пользователем, нажимая кнопку «Пуск», но я бы хотел, чтобы он мог быть отменен с использованием, предпочтительно, клавиши «Escape».Преждевременное отключение цикла 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
My Loop
Private Sub RUNLOOP()
While loops >= 1
' my code that runs in the loop
loop = loop - 1
End While
End Sub
В то время как цикл выполняется мои нажатия клавиш не регистрируются, в противном случае они регистрируются в порядке.
Это плохая идея в .NET. Вам не нужно это делать, когда у вас есть класс BackGroundWorker, с которым так легко работать, и это также может привести к проблемам с повторным подключением. -1 –
Я понимаю, что обычные методы проектирования в .NET делают это плохой идеей, но в контекст этого вопроса, это правильный ответ. Альтернатива заключается в том, чтобы помочь ему в полной редизайне его заявления. Вы хотите добровольно участвовать в этом? –
Я не знал, что добавление BackGroundWorker и рефакторинг одного метода представляет собой «полную редизайн приложения». ОП задал вопрос о том, как сохранить пользовательский интерфейс живым, и это плохое (ленивое) решение. –