2013-11-01 42 views
-1

我需要将我的进度栏暂停几秒钟,然后再回到空值。我需要将我的进度栏暂停几秒钟,然后再回到空

我正在使用后台工作。

进度条中的完成并不明显,我想让用户有时间注意完成的工作。

我不想使用“Thread.sleep”,因为它会让我的程序变慢。我认为冻结ui可能会有所帮助,因为我所有的工作都是在后台线程中完成的,但我不知道如何去做。

+4

只需将进度栏保持为100%,即会显示一个消息框,指出“操作已完成”,并在用户单击消息框上的确定时清零进度栏。 –

+6

不要冻结UI,你的用户会恨你。 –

+1

为什么你认为Thread.Sleep会让你的程序变慢?毕竟,你想等待一些(毫秒)和Thread.Sleep做得很好。 – Markus

回答

0

我终于解决了这个问题。虽然我没有真正冻结用户界面,也没有使用thread.sleep。 我进入了最后一个子功能,并将进度报告为100。因此,当它完成该功能时,进度条也会达到100.但是,需要几毫秒才能返回到dowork函数,然后返回到runworker完成。它提供了一个窗口让用户注意到它已完成。感谢大家!

我感谢您的所有努力和建议。

0

我同意做Thread.Sleep似乎错了解决这个问题。问题不在于你的计算,这是一个演示问题。也许使用某种动画来解决你的问题。不知道你正在使用,但看看这个线程看到的jQuery进度动画:

How do you animate the value for a jQuery UI progressbar?

+2

我想你已经假设OP正在使用Web解决方案。它没有直接声明,但标签建议其直c#。 – paqogomez

2

这是使用新asyncawait关键字一个完美的方案。

private async void YourBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
{ 
    YourProgressBar.Value = 100; 
    await Task.Delay(100); 
    YourProgressBar.Value = 0; 
} 
+0

我确实尝试过,但它不适用于我。谢谢 – Avi

+0

@Avi:什么都行不通?你收到错误信息了吗? –

+0

等待和异步未被识别。当我找到解决方案时,我没有费心去尝试让他们工作。 – Avi