过早取消While循环

use*_*603 2 vb.net loops while-loop

我正在使用While循环,它根据用户输入的值循环一定数量的循环(1-576).它由用户单击"开始"按钮激活,但我希望能够使用"Escape"键取消它.

但是,当循环进行时,我无法让程序识别任何按键.

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
Run Code Online (Sandbox Code Playgroud)

我的循环

Private Sub RUNLOOP()
            While loops >= 1
                  ' my code that runs in the loop
                  loop = loop - 1
            End While
End Sub
Run Code Online (Sandbox Code Playgroud)

当循环运行时,我的按键不会注册,否则它们会正常注册.

peS*_*HIr 5

您是否考虑过BackgroundWorker在后台线程中执行while循环代码,确保您的GUI保持响应(=调整/重新绘制表单并让用户"达到"实现取消正在运行的工作的方式)而无需Application.DoEvents在内部循环"假"这种行为?

如果您已经在.NET Framework 4.0上,则可以尝试使用并行编程而不是BackgroundWorker.