在Windows应用程序中运行方法时显示进度

时间:2011-06-29 12:50:47

标签: multithreading json c#-4.0 background progress-bar

我在c#windows窗体(fw4.0)中有一个应用程序,我有一个创建json字符串的方法,并通过post发送到网页中的action方法。我不知道需要多少,但我想在方法执行时显示进度条。我该怎么做? 我有一个想法是在方法运行时执行计数器并将其显示给用户,但我不知道如何...它必须在另一个线程中?如何?

我没有更多有用的信息提供..我希望你能帮助我! 谢谢!

3 个答案:

答案 0 :(得分:1)

Use the background worker以阻止阻止用户界面并报告进度。

答案 1 :(得分:0)

您可以根据两个值报告进度:

  • prob_time - 行动完成所需的最可能时间;

  • max_time - 您在考虑操作失败之前愿意等待的最长时间;

您可以使进度条在prob_time中达到某个点(例如80%),然后在(max_time-prob_time)中达到100%。

如果操作比max_time更快地完成,则将进度跳转到100%并报告“成功”,否则报告“失败”

答案 2 :(得分:0)

最后我做到了! 我必须使用2名背景工人..这就是我所做的.. backgroundWorker1:执行post方法。 backgroundWorker2:执行TimeSpan计数器。 当backgroundWorker2启动时,将TimeSpan设置为0并且在DoWork中,如果backgroundWorker1 CancellationPending为false,则我在backgroundWorker2中报告进度。 当post方法完成后,我将backgroundWorker1设置为CancelAsync,因此backgroundWorker2将终止。 我认为这是我最好的解决方案。