【问题标题】:Accessible program while running a loop运行循环时可访问的程序
【发布时间】:2015-10-02 08:48:42
【问题描述】:

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

【问题讨论】:

    标签: vb.net loops runtime


    【解决方案1】:

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

    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/

    但是,有一些障碍:如果您有一个长时间运行的循环(比如说对处理大量记录的数据库的查询)并且您想取消它,您应该在运行时禁用所有“危险”按钮循环,即禁用所有其他然后“取消”。当然,取消按钮应该只在循环开始时启用并在结束时禁用。

    【讨论】:

    • 感谢您的回答,它确实有帮助,但是是否可以在执行我的事件时让我的循环运行而不让它们彼此停止????
    • 对您的问题:事件中发生了什么?仅移动窗口或检查取消按钮即可,但如果您确实需要并行执行,则应从线程开始。请注意,这不好笑。
    【解决方案2】:
    Dim th as new System.Threading.Thread(sub()
                                             'Run Loop here
                                          End Sub)
    th.Start()
    

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

    【讨论】:

      【解决方案3】:

      你应该看看多线程和异步编程来解决这类问题。

      【讨论】:

      • 像Backgroundworker组件一样,在多线程中有简单的“章节”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 2019-02-27
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      相关资源
      最近更新 更多