【问题标题】:Having a Backgroundworker refresh splash screen让 Backgroundworker 刷新启动画面
【发布时间】:2010-06-01 18:11:40
【问题描述】:

理论上是否可以让一个类中的 BackgroundWorker 定期刷新现有的启动屏幕表单,或者这不可能? (我知道这可能是糟糕的设计,但目前我没有看到更好的方法。)

请记住:

  1. 我不希望后台工作人员进行加载,因为这将非常难以实施。

  2. 我无法使用内置的启动画面支持

  3. 我知道 DoEvents 替代方案,但我不想走这条路,它也很难实现,而且不可靠。

【问题讨论】:

  • 好的,等一下:什么内置支持?这是 WinForms 还是 WPF?
  • WinForms,抱歉没有提及。

标签: .net winforms backgroundworker splash-screen


【解决方案1】:

这绝对是可能的,如果它不是 BackgroundWorker 的预期用途(主要是在长时间运行的后台进程发生时刷新前台 GUI),那么它非常接近。

如果您尝试在应用程序或加载或安装时让启动画面在图像或文本中旋转,请考虑将timer 放在启动画面上,并在计时器滴答时刷新。

远离DoEvents 是明智之举,这乍一看似乎是最简单的解决方案,但会导致痛苦和间歇性、难以调试的问题。

编辑:从您的 cmets 看来,您正在将应用程序加载到初始屏幕的 GUI 线程上,这会导致您的初始表单无法自行刷新。这是预期的行为。您需要将应用程序加载到后台线程,使用裸线程或 BackgroundWorker(专为这种情况而设计)。我敢打赌,这并不像你想象的那么难。如果您在使用这种方法时遇到问题,请随时发布问题寻求帮助。

【讨论】:

  • 感谢您的洞察力。我只需要定期刷新启动画面以便重新绘制,因为当执行需要很长时间的操作时它会变成白色。不幸的是,计时器不能正常工作。
  • @Jiri:啊。这改变了事情——我明白你现在在做什么。它行不通。还记得选项 1 的后台工作人员,这似乎很难实现吗?你必须这样做。这是做事的正确方式,我敢打赌这并不难——我已经做过很多次了。如果您在使用这种方法时遇到问题,请随时描述原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多