程序在弱计算机上运行时,ProgressBar不会更新

时间:2011-05-26 14:43:15

标签: c# winforms multithreading

当我在一台快速计算机上运行程序时,ProgressBarLabel(写入进度)也会完全更新。当我在弱电脑上运行它(如PIV或旧的c2d)时ProgressBar和表格保持冻结(但程序运行直到完成)。

我该如何解决?有背景工作者吗?

3 个答案:

答案 0 :(得分:3)

如果您正在使用进度条,我猜测任务是否足够长,以保证后台/工作线程。有很多选项(BackgroundWorker,启动你自己的线程等)。 BackgroundWorker可能是最简单的。

答案 1 :(得分:1)

是的,您应该将处理放入后台线程。使用后台工作程序是个好主意,因为您只需从ProgressChanged事件中更新控件即可。

答案 2 :(得分:-1)

有一些方法允许在长时间运行的任务中引用UI。

1-在另一个步骤中执行任务/在异步方法调用中然后使用this.Invoke来更改进度条。 2-例如,通过调用winforms中的Application.DoEvents()强制UI在任务中的某些点刷新。