我一直在尝试将进度条设置为选取框,以便在另一个功能运行时继续移动。该函数运行后,我将显示消息(对于本例)
我能够完成这项工作的唯一方法是与后台工作人员一起工作,然后有一个
做 循环直到在主窗体中运行的条件,直到操作完成,然后是我的消息框。
这似乎是完成此任务的一种拼凑方法,而 thread.start 后跟 thread.join 似乎是解决此问题的更好方法。但是,我也无法使其正常工作。
如果有人感兴趣,我已经提供了一个小型演示程序。 http://www.filedropper.com/progressbar
谢谢
最佳答案
Thread.Start
和 Thread.Join
不是这样做的方法 - 这基本上会再次阻塞您的 UI 线程。 Application.DoEvents
也不是可行的方法 - 您确实需要一个单独的线程。
然后您可以使用 Control.Invoke
/Control.BeginInvoke
编码(marshal)回 UI 线程,但是 BackgroundWorker
让这一切变得更加容易。搜索“BackgroundWorker 教程”会产生大量点击。
编辑:要在工作人员完成时显示消息,请使用 RunWorkerCompleted
事件。 ReportProgress
方法和ProgressChanged
事件用于处理更新进度条。 (UI订阅ProgressChanged,任务定期调用ReportProgress。)
关于winforms - 任务完成后才显示进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/705745/