1

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

任何的想法??

4

1 回答 1

11

而我的主线程正在做一些繁重的计算。

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

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

ProgressBar 有一个Style属性,您可以设置它Marquee来模拟无限的进程。

于 2012-09-20T07:34:43.713 回答