2013-03-19 23 views
0

在我的.NET应用程序中,我正在将大型SQL表读入内存,并且我希望应用程序窗口中的ProgressBar进度至少有所提高,而​​操作正在阻止。我已经在BackgroundWorker对象的后台线程中调用Fill(),我试图在前台线程中更新ProgressBar,该线程调用了RunWorkerAsync(),但这不起作用。这里有什么建议?如何在长时间的外部操作中更新ProgressBar?

+0

你不会从Fill获得进展。你可以尝试OnRowUpdating/Updated,或者去一个基于计时器的简单动画。你如何研究取得了多大进展,取决于你在做什么。如果这太重了,那么计数也可能很重。 – 2013-03-19 21:04:43

+0

我知道'Fill()'没有更新。我试图做的是在后台线程执行'Fill()'的时候,在前台线程中为ProgressBar创建动画,但这不起作用。 – Conrad 2013-03-19 23:04:27

+1

可能没有想过自己。只需在灌装开始时关闭计时器,并在灌装完成时停止计时。 – 2013-03-20 02:28:10

回答

0

由于无法从Dataset.Fill中获取进度,因此直接使用OnRowUpdate/OnRowUpdated会很痛苦,而且仍然无法完成%完成操作,因此您会发现应更新多少行。

不妨在这里打一个计时器,并在填充任务运行时更新一些动画。

作为一个方面说明,我们写了一个小动画组件,它运行在它自己的线程中,您传递想要在线程中执行的方法。把它一切都很好地包起来,你可以把它放在一个使用块中,并且整齐整齐。适用于火灾和忘记线程,并且您也可以执行模式版本。

相关问题