可访问程序 while 运行 一个循环

Accessible program while running a loop

我想 运行 一个循环 (Do,For ....) 但我希望即使在 运行 循环时也可以访问该程序。我的意思的一个例子是,我希望程序 运行 循环,但在 运行 循环时,仍然能够单击我的表单中的任何内容或重新定位我的表单。

虽然很多人会说这是坏的、邪恶的、丑陋的,但这将帮助你解决你的问题:

https://msdn.microsoft.com/de-de/library/system.windows.forms.application.doevents(v=vs.110).aspx

Application.DoEvents

另外 link(说明 DoEvents 不是邪恶的):

http://blog.codinghorror.com/is-doevents-evil/

但是,也有障碍:如果你有一个很长的 运行 循环(比方说对处理大量记录的数据库的查询)并且你想取消它,你应该禁用所有 "dangerous" 按钮,同时 运行 你的循环,也就是说,禁用所有其他然后 "cancel"。当然,取消按钮应该只在循环开始时启用,在循环结束时禁用。

对于这类问题,你应该看看多线程和异步编程。

Dim th as new System.Threading.Thread(sub()
                                         'Run Loop here
                                      End Sub)
th.Start()

我经常使用上面的代码:D