我有一个小的winform应用程序,我在第一个运行的窗体上放了一个进度条。此进度条在10秒内完成,在进度条完成后,下一个活动开始,如数据库调用。
我希望当这个进度条运行10秒时,在这段时间内数据库调用应该完成它的工作,而不是在进度条完成后调用。
有没有人可以解释或者有示例代码来解释这种技术?提前谢谢。
发布于 2014-04-25 13:05:06
你的问题可能是因为你正在用户界面线程上运行繁重的工作,所以基本上你是在阻止这个线程做任何事情。
要解决此问题,您需要在单独的线程上运行,并在进度条控件需要更新时对其执行Control.Invoke。
在VS杂志上查看Threading and the UI。
发布于 2014-04-25 14:41:21
你需要使用后台工作者!
在后台工作线程和UI线程中执行繁重的操作,使进度条保持运行。
你可以找到很多关于后台工作者用法的例子,有些在这里:
http://www.dotnetperls.com/backgroundworker
发布于 2014-04-25 13:07:57
有很多很好的多线程教程详细地解释了这个问题。谷歌搜索"winforms sync“this是第一个出现的。相当不错。
https://stackoverflow.com/questions/23284393
复制相似问题