Я использую VB.NET и у меня есть:Как разорвать петлю с одной кнопкой мыши
Start
кнопкуStop
кнопкуWhile
петля
Когда нажата кнопка Start
, начинается цикл While
. Я хочу остановить цикл, когда нажата кнопка Stop
.
Я пытался использовать Applications.DoEvents
, но цикл останавливается, когда кнопка Stop
нажата дважды.
Ниже мой код, используя Applications.DoEvents
Dim stopclick As Boolean = False
Private Sub btnPlay_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPlay.Click
btnForward.Enabled = False
btnStop.Enabled = True
While
' Perform the while statements
If stopclick = True Then
stopclick = False
Application.DoEvents()
Exit While
End If
End While
End Sub
Private Sub btnStop_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnStop.Click
stopClick = True
End Sub
- ли я
Application.DoEvents
неправильно? - Каковы другие варианты, кроме
Application.DoEvents
? Как я могу остановить цикл одним нажатием кнопкиStop
?
Я попытался размещения Application.DoEvents() вне заявления If. Однако мне еще нужно дважды щелкнуть кнопку остановки. 1) Как сделать кнопку «Стоп» одним щелчком, чтобы разбить цикл? 2) Знаете ли вы образец, обрезающий петлю, с помощью BackgroundWorker? – user2150279
Да, я просто проверил его и получил то же поведение. Я не знаю, почему это так, но в любом случае, это не правильный способ сделать это в любом случае, поэтому я не буду тратить время на то, чтобы понять это. Я добавил пример с BackgroundWorker. –
Уважаемый @Steven Doggart, спасибо за ваш код выше. Я проверил его, однако у меня появилась ошибка. В выражении while у меня есть переменная _ChartControl1_ из Form1. Когда код запускается, он показывает ошибку: «Неверная операция кросс-потока: Control 'Form1' обращается из потока, отличного от потока, в котором он был создан." Вот пример строк в инструкции While: 'ChartControl1.Series.Add (series3) Me.Controls.Add (ChartControl1)'. Сообщение об ошибке появляется в 'Me.Controls.Add (ChartControl1)' – user2150279