我试图更改一些地址。但是,我需要代码几乎一致地更新它们。代码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
答案 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