我需要暂停进度条几秒钟才能返回null

时间:2013-11-01 20:27:01

标签: c# multithreading backgroundworker

我需要暂停进度条几秒钟才能返回null。

我正在使用Background worker。

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我同意做Thread.Sleep似乎不适合解决这个问题。问题不在于您的计算,而是演示问题。也许使用某种动画来解决这个问题可以解决你的问题。不确定你在使用什么,但看看这个帖子看看jquery进度动画:

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

答案 2 :(得分:0)

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

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