【问题标题】:How can I force a progress bar to update during a long-running operation in VB.NET?如何在 VB.NET 中的长时间运行操作期间强制更新进度条?
【发布时间】:2011-05-27 19:47:43
【问题描述】:

我正在为 VB.NET 运行一个测试程序,它只会在 for 循环中处理一百万个数字。我已经将一个暗示 for 循环进度的变量与进度条相关联,但似乎当我运行程序时,进度条不会自行更新。该栏本身只有 0-100 的值作为输入(如文档中所述),我在没有使用 for 循环的情况下对其进行了测试,并且它可以工作。

我认为这与线程有关,但我还不确定在 VB.NET 中究竟是如何工作的。所以我想先征求专家的意见。

感谢任何建议。

【问题讨论】:

  • 是的,线程。循环应该在另一个线程中。但请注意,UI 应该始终在 UI 的线程中更新(在 .net 中我认为它是主线程)。但是,我无法给出完整的答案,因为我只做 Mac/iOS 开发,但我认为这在任何地方都是一样的,但在浏览器中。
  • 不要在 VB 6 中使用线程。它可能,但它绝对不值得,尤其是对于这么简单的事情。
  • 你是用VB6做的吗?
  • 我在 Visual Studios 2009 中这样做。
  • 我一定错过了那个版本。您是指 2008 年还是 2010 年?

标签: vb.net winforms progress-bar


【解决方案1】:

不知道这是否仍然适用于 .net(或者这是一个 VB6 问题),但 Application.DoEvents 通常是 VB6 天内的解决方案。

在更新进度条的循环中尝试Application.DoEvents

【讨论】:

  • 这对于 VB.NET 是正确的。在 VB 6 中,您只需编写 DoEvents(没有这样的类 Application)。您应该在循环的每次迭代中执行此命令,以确保您的进度条得到更新。
  • 在 VB.NET winforms 中要查看的另一件事是 system.componentmodel 下的 backgroundworker
【解决方案2】:

很久以前,但我认为你需要 做事件 声明

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 2014-03-02
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多