我一直试图将进度条设置为marquee以在另一个函数运行时继续移动.运行此函数后,将显示消息(对于此示例)
我能够让这个工作的唯一方法是与后台工作者,然后有一个
循环直到在主窗体中运行的条件,直到操作完成,然后是我的消息框.
这似乎是实现这一目标的一种方法,一个thread.start后跟一个thread.join似乎是一个更好的方法来解决这个问题.但是,我也无法做到这一点.
如果有人有兴趣,我已经包含了一个小型演示程序. http://www.filedropper.com/progressbar
谢谢
Thread.Start
而且Thread.Join
是不是要做到这一点-再次,基本上阻止您的UI线程.Application.DoEvents
也不是要走的路 - 你真的想要一个单独的线程.
然后,您可以使用Control.Invoke
/ Control.BeginInvoke
来编组回UI线程,但这BackgroundWorker
使得所有这些变得更加容易.搜索"BackgroundWorker教程"会产生大量的点击.
编辑:要在工作人员完成时显示消息,请使用该RunWorkerCompleted
事件.该ReportProgress
方法和ProgressChanged
事件来处理更新进度条.(UI订阅了ProgressChanged,该任务定期调用ReportProgress.)