我需要在弹出窗口中有一个进度条,而我的主线程正在做一些繁重的计算。 我使用的是 Oracle API,所有繁重的工作都是通过调用此 API 的 1 个函数完成的,因此我无法使用 backgroudworker 更新,因为我没有 API 的代码。 我试图创建一个带有 ProgressBar 和 Timer 的新表单,但是 timer_Click 事件从未被触发!!(???)
有什么想法吗??
最佳答案
while my main thread is doing some heavy calculations.
错了。切勿在 Windows 应用程序的主线程内进行任何繁重的计算,否则您的用户会讨厌您。
如果您的 API 不提供报告进度的方法,那么您最好的办法就是在计算进行时显示一些旋转动画,因为您将无法知道完成工作的确切百分比。所以把计算放在一个BackgroundWorker里面,在运行计算之前显示一些旋转动画(这本身应该在 DoWork 事件中完成)并在工作完成后隐藏动画(RunWorkerCompletedEvent)。
ProgressBar 有一个 Style
属性,您可以将其设置为 Marquee
以模拟无限进度。
关于C# 在弹出窗口中显示进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12507923/