C# ProgressBar没有';当程序在弱计算机上运行时,无法更新

C# ProgressBar没有';当程序在弱计算机上运行时,无法更新,c#,winforms,multithreading,C#,Winforms,Multithreading,当我在一台快速的计算机上运行程序时,ProgressBar和标签(也写进度)会得到完美的更新。当我在一台较弱的计算机(如PIV或旧的c2d)上运行它时,ProgressBar和表单保持冻结状态(但程序会一直运行到它完成) 我如何解决这个问题?使用后台工作程序?是的,您应该将处理放入后台线程。使用后台工作程序是一个好主意,因为您只需从它的ProgressChanged事件更新控件。如果您使用的是进度条,我猜无论任务是什么,都肯定足够长,可以保证后台/工作程序线程。有很多选择(BackgroundW

当我在一台快速的计算机上运行程序时,
ProgressBar
标签(也写进度)会得到完美的更新。当我在一台较弱的计算机(如PIV或旧的c2d)上运行它时,
ProgressBar
和表单保持冻结状态(但程序会一直运行到它完成)


我如何解决这个问题?使用后台工作程序?

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

如果您使用的是进度条,我猜无论任务是什么,都肯定足够长,可以保证后台/工作程序线程。有很多选择(BackgroundWorker、旋转自己的线程等)。可能是最简单的。

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

1-在另一个tread/中以anychronous方法调用运行任务,然后使用this.Invoke更改progressbar。
2-例如,在winforms中调用Application.DoEvents(),强制UI在任务的某些点刷新。

您使用的是WPF还是Windows窗体?不建议使用Application.DoEvents()。