我有一个经历无限循环并处理数据的表单。当我单击“关闭”表单的按钮时,表单即使关闭也会继续处理。我希望表单完全结束并退出其循环语句,然后打开一个新表单。
以下是我用来关闭表单的代码
frmMain.Close()
frmMain.Dispose()
注意:我没有使用线程,它只是一个简单的VB.NET应用程序。我没有关闭主要的启动表格。
答案 0 :(得分:84)
执行此操作的“正确”方法实际上是后台工作线程。但是这也可以在不需要后台工作线程的情况下工作。
在表单类中声明一个变量。
Private keepLoopAlive As Boolean
然后将处理循环编写为:
keepLoopAlive = True
Do While keepLoopAlive
(your code that loops here)
DoEvents
Loop
然后在你的关闭事件上执行:
keepLoopAlive = False
Me.Close()
这将导致循环首次结束,并且表单应该关闭。
请注意我已经从内存中编写了这段代码,而不是在IDE中编写代码,因此可能存在拼写错误。
答案 1 :(得分:12)
我不是.NET开发人员,所以这可能无效,但如果我执行无限循环,我会在每次启动时检查循环是否仍然有效,具有某种布尔值,如果失败,退出循环。
当您关闭表单时,将布尔值设置为false并且它将退出,您可以有一个等待并重新启动循环的外部循环,或者您可以在其他时间重新启动整个函数。