如何执行适当的循环

时间:2017-03-18 16:20:03

标签: vb.net

我试图更改一些地址。但是,我需要代码几乎一致地更新它们。代码WORKS,但是,当选中复选框时,它冻结并且不会让我取消选中它。 (要停止更改地址)

我也尝试过:

Loop While CheckBox1.CheckState = 1

但这对这个问题没有帮助。

代码:

Private Sub CheckBox1_Click(sender As Object, e As EventArgs) Handles CheckBox1.Click
    If IsProcessRunning("Notepad") = True Then
        Do
            Try
                WriteInteger("Notepad", &H49E6CC, 99)
                WriteInteger("Notepad", &H49E6D4, 99)
            Catch ex As Exception
            End Try
        Loop While True
    Else
        CheckBox1.CheckState = 0
        MessageBox.Show("Notepad Not Running!")
    End If
End Sub

2 个答案:

答案 0 :(得分:1)

当您单击复选框时,应用程序将无响应,因为您在事件处理程序中编写了无限循环。应用程序的主线程处理UI事件的执行。

您需要创建一个能够持续执行逻辑的独立机制,例如BackgroundWorker或使用a separated thread

因此,复选框的事件处理程序仅启用/禁用BackgroundWorker或分隔的Thread

答案 1 :(得分:1)

[解决了问题]感谢所有人的帮助!

    Dim Timer1 As New Timer
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    If CheckBox1.CheckState = 1 Then
        AddHandler Timer1.Tick, AddressOf Timer1_Tick
        Timer1.Interval = 500
        Timer1.Start()

    Else
        RemoveHandler Timer1.Tick, AddressOf Timer1_Tick
        Timer1.Stop()
    End If
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs)
    WriteInteger("Notepad", &H49E6D4, 99)
    WriteInteger("Notepad", &H49E6CC, 99)
End Sub