【发布时间】:2015-10-02 08:48:42
【问题描述】:
我想运行一个循环 (Do,For ....),但我希望即使该循环正在运行,程序也可以访问。我的意思的一个例子是,我希望程序运行循环,但在运行循环时,仍然能够单击我的表单中的任何内容或重新定位我的表单。
【问题讨论】:
我想运行一个循环 (Do,For ....),但我希望即使该循环正在运行,程序也可以访问。我的意思的一个例子是,我希望程序运行循环,但在运行循环时,仍然能够单击我的表单中的任何内容或重新定位我的表单。
【问题讨论】:
虽然很多人会说这是不好的、邪恶的和丑陋的,但这会帮助你解决你的问题:
https://msdn.microsoft.com/de-de/library/system.windows.forms.application.doevents(v=vs.110).aspx
Application.DoEvents
附加链接(说明 DoEvents 不是邪恶的):
http://blog.codinghorror.com/is-doevents-evil/
但是,有一些障碍:如果您有一个长时间运行的循环(比如说对处理大量记录的数据库的查询)并且您想取消它,您应该在运行时禁用所有“危险”按钮循环,即禁用所有其他然后“取消”。当然,取消按钮应该只在循环开始时启用并在结束时禁用。
【讨论】:
Dim th as new System.Threading.Thread(sub()
'Run Loop here
End Sub)
th.Start()
我经常使用上面的代码:D
【讨论】:
你应该看看多线程和异步编程来解决这类问题。
【讨论】: