【发布时间】:2014-04-25 14:41:21
【问题描述】:
我有一个小的 winform 应用程序,我在第一个运行的表单上放了一个进度条。此进度条在 10 秒内完成,在进度条完成后,下一个活动开始,如数据库调用。
我希望当这个进度条运行 10 秒时,在此期间数据库调用应该完成它的工作,而不是在进度条完成后调用。
任何人都可以解释或有示例代码来解释这种技术吗??? 提前致谢。
【问题讨论】:
-
请展示一些代码到目前为止您尝试过什么?
我有一个小的 winform 应用程序,我在第一个运行的表单上放了一个进度条。此进度条在 10 秒内完成,在进度条完成后,下一个活动开始,如数据库调用。
我希望当这个进度条运行 10 秒时,在此期间数据库调用应该完成它的工作,而不是在进度条完成后调用。
任何人都可以解释或有示例代码来解释这种技术吗??? 提前致谢。
【问题讨论】:
您的问题可能源于您在用户界面线程上运行繁重的工作,因此基本上您阻止该线程执行任何操作。
要解决此问题,您需要在单独的线程上运行,并在需要更新时Control.Invoke 进度条控件。
在 VS 杂志上查看Threading and the UI。
【讨论】:
你需要使用后台工作者!
在后台工作线程和 UI 线程中执行繁重的操作以保持进度条运行。
你应该找到很多关于后台工作器使用的例子,这里有一些:
【讨论】:
那里有很多很好的多线程教程可以详细解释这个问题。谷歌搜索“winforms 线程同步”this 是第一个出现的。挺好的。
【讨论】: