2009-11-13 37 views
2

我在我的VB.NET应用程序中运行几个长时间的同步操作,每个操作可能需要几分钟才能完成。在这些操作过程中,表单将变为白色,标题栏将显示“Not Responding”,并且一些用户可能会认为它已停止工作,但实际上它仍在运行时可能会关闭该应用程序。在长时间同步操作期间刷新表格

我很确定我需要多线程来做到这一点,但我最初的努力并未成功。在这些长时间的操作正在运行时,每隔几秒钟刷新一次表单的最简单方法是什么?

回答

7
+1

我会upvote,如果你将包括一个如何使用这将解决OPs问题的例子。事实上,答案只是非常有帮助。 – tvanfosson 2009-11-13 14:47:35

+1

+1该链接提供了一个非常好的例子。 – Nifle 2009-11-13 14:50:44

+1

@Nifle - 引用示例代码来改进答案,或者在这种情况下,因为示例代码很长,请描述如何使用该类来解决问题。我希望在这里看到更完整的答案,因为如果链接断开,这个答案将变得毫无用处。在回答时,你需要记住,最终答案需要独立地站在自己的位置,而不管它链接到哪个资源。 – tvanfosson 2009-11-13 14:58:17

1

您可以使用Apllication.DoEvents

+1

这可能会导致其他问题,如再次入侵问题。 – 2009-11-13 14:46:05

1

有BackgroundWorker的here类的一个很好的示范。基本上,您需要在后台执行任务,并定期通过提升主线程捕获的事件来更新主线程的状态。 BackgroundWorker类具有您在大多数情况下所需的所有功能。在后台运行该任务将使您的应用程序响应。