2011-01-23 65 views
58

我有一个窗体经历一个无限循环并处理数据。当我点击一个“关闭”窗体的按钮时,窗体即使关闭,也会继续处理。我希望表单完全结束并退出其循环语句,然后打开一个新表单。VB.NET - 中断窗体循环和结束窗体

这里是我使用的关闭表单

frmMain.Close() 
frmMain.Dispose() 

注意代码:我不使用线程,它只是一个简单的VB.NET应用。我没有关闭主要的启动表单。

回答

82

这样做的“正确”方式是真正使用后台工作线程。但是这也可以在不需要后台工作线程的情况下工作。

声明表单类中的变量。

Private keepLoopAlive As Boolean 

然后再编写处理循环是这样的:

keepLoopAlive = True 

Do While keepLoopAlive 

    (your code that loops here) 

    DoEvents 

Loop 

然后在你关闭事件做:

keepLoopAlive = False 
Me.Close() 

这将导致循环结束它得到第一次机会,你的表格应该关闭。

请注意我已经从内存中编写了这些代码,而不是在IDE中,因此可能会出现拼写错误。

+1

谢谢!我结束实施这个到我的程序中,它很好用!我原本是问我是否可以突然结束表单过程而不必特别退出循环,但听起来这是不可能的。 – Phil 2011-01-24 04:08:32

11

我不是.NET开发人员,所以这可能是无效的,但如果我执行无限循环,我会检查每次我开始循环仍然有效的某种布尔值,如果它失败,退出循环。

当您关闭表单时,将布尔值设置为false并且它将会退出,并且您可以有一个等待并重新启动循环的外部循环,或者您可以重新启动整个函数。