我需要将我的进度栏暂停几秒钟,然后再回到空值。我需要将我的进度栏暂停几秒钟,然后再回到空
我正在使用后台工作。
进度条中的完成并不明显,我想让用户有时间注意完成的工作。
我不想使用“Thread.sleep”,因为它会让我的程序变慢。我认为冻结ui可能会有所帮助,因为我所有的工作都是在后台线程中完成的,但我不知道如何去做。
我需要将我的进度栏暂停几秒钟,然后再回到空值。我需要将我的进度栏暂停几秒钟,然后再回到空
我正在使用后台工作。
进度条中的完成并不明显,我想让用户有时间注意完成的工作。
我不想使用“Thread.sleep”,因为它会让我的程序变慢。我认为冻结ui可能会有所帮助,因为我所有的工作都是在后台线程中完成的,但我不知道如何去做。
我终于解决了这个问题。虽然我没有真正冻结用户界面,也没有使用thread.sleep。 我进入了最后一个子功能,并将进度报告为100。因此,当它完成该功能时,进度条也会达到100.但是,需要几毫秒才能返回到dowork函数,然后返回到runworker完成。它提供了一个窗口让用户注意到它已完成。感谢大家!
我感谢您的所有努力和建议。
我同意做Thread.Sleep似乎错了解决这个问题。问题不在于你的计算,这是一个演示问题。也许使用某种动画来解决你的问题。不知道你正在使用,但看看这个线程看到的jQuery进度动画:
我想你已经假设OP正在使用Web解决方案。它没有直接声明,但标签建议其直c#。 – paqogomez
这是使用新async
和await
关键字一个完美的方案。
private async void YourBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
YourProgressBar.Value = 100;
await Task.Delay(100);
YourProgressBar.Value = 0;
}
只需将进度栏保持为100%,即会显示一个消息框,指出“操作已完成”,并在用户单击消息框上的确定时清零进度栏。 –
不要冻结UI,你的用户会恨你。 –
为什么你认为Thread.Sleep会让你的程序变慢?毕竟,你想等待一些(毫秒)和Thread.Sleep做得很好。 – Markus