当我在一台快速计算机上运行程序时,ProgressBar
和Label
(写入进度)也会完全更新。当我在弱电脑上运行它(如PIV或旧的c2d)时ProgressBar
和表格保持冻结(但程序运行直到完成)。
我该如何解决?有背景工作者吗?
答案 0 :(得分:3)
如果您正在使用进度条,我猜测任务是否足够长,以保证后台/工作线程。有很多选项(BackgroundWorker,启动你自己的线程等)。 BackgroundWorker
可能是最简单的。
答案 1 :(得分:1)
是的,您应该将处理放入后台线程。使用后台工作程序是个好主意,因为您只需从ProgressChanged
事件中更新控件即可。
答案 2 :(得分:-1)
有一些方法允许在长时间运行的任务中引用UI。
1-在另一个步骤中执行任务/在异步方法调用中然后使用this.Invoke来更改进度条。 2-例如,通过调用winforms中的Application.DoEvents()强制UI在任务中的某些点刷新。