VB.NET -прервите петлю формы и форму конца
У меня есть форма, которая проходит через бесконечный цикл и обрабатывает данные. Когда я нажимаю кнопку, которая "закрывает" форму, Форма продолжает обработку, даже если она закрыта. Я хочу, чтобы форма полностью завершилась и вышла из своего оператора цикла, а затем открыла новую форму.
вот код, который я использую, чтобы закрыть форму
frmMain.Close()
frmMain.Dispose()
примечание: Я не использую потоки это простоVB.NET применение. Я не закрываю основную форму запуска.
2 ответа:
"правильный" способ сделать это с фоновыми рабочими потоками на самом деле. Но это также будет работать без необходимости фоновых рабочих потоков.
объявить переменную в классе формы.
Private keepLoopAlive As Boolean
затем напишите цикл обработки, чтобы быть что-то вроде:
keepLoopAlive = True Do While keepLoopAlive (your code that loops here) DoEvents Loop
затем на вашем близком событии сделайте:
keepLoopAlive = False Me.Close()
это приведет к тому, что цикл закончится первым шансом, и ваша форма должна закрыться.
пожалуйста, обратите внимание, что я написал этот код из памяти, а не в IDE, поэтому могут быть опечатки.
Я не .NET разработчик, поэтому это может быть неверно, но если бы я выполнял бесконечный цикл, я бы проверял каждый раз, когда я начинал, что цикл все еще действителен с каким-то логическим значением, и если он не удался, выйдите из цикла.
когда вы закрываете форму, установите логическое значение false, и оно выпадет, и вы можете либо иметь внешний цикл, который ждет и перезапускает цикл, либо вы можете перезапустить всю функцию в другой раз.