C#在弹出窗口中显示进度条

时间:2012-09-20 07:31:20

标签: c# .net winforms

我需要在弹出窗口中有一个进度条,而我的主线程正在进行一些繁重的计算。 我正在使用Oracle API,所有繁重的工作都是通过调用此API的1个函数完成的,所以我不能使用backgroudworker更新因为我没有API的代码。 我尝试使用ProgressBar和Timer创建一个新表单,但是timer_Click事件永远不会被触发!!(???)

任何想法?

1 个答案:

答案 0 :(得分:11)

  

虽然我的主要线程正在进行一些繁重的计算。

错误。永远不要在Windows应用程序中的主线程内进行任何繁重的计算,否则您的用户只会讨厌您。

如果您的API没有提供报告进度的方法,那么您可以做的最好的事情是在计算正在进行时显示一些旋转动画,因为您将无法知道所完成工作的确切百分比。因此,将计算放在BackgroundWorker内,在运行计算之前显示一些旋转动画(这本身应该在DoWork事件中完成)并在工作完成后隐藏动画(RunWorkerCompletedEvent )。

ProgressBar具有Style属性,您可以将其设置为Marquee以模拟无限进展。