我需要在弹出窗口中有一个进度条,而我的主线程正在进行一些繁重的计算。 我正在使用Oracle API,所有繁重的工作都是通过调用此API的1个函数完成的,所以我不能使用backgroudworker更新因为我没有API的代码。 我尝试使用ProgressBar和Timer创建一个新表单,但是timer_Click事件永远不会被触发!!(???)
任何想法?
答案 0 :(得分:11)
虽然我的主要线程正在进行一些繁重的计算。
错误。永远不要在Windows应用程序中的主线程内进行任何繁重的计算,否则您的用户只会讨厌您。
如果您的API没有提供报告进度的方法,那么您可以做的最好的事情是在计算正在进行时显示一些旋转动画,因为您将无法知道所完成工作的确切百分比。因此,将计算放在BackgroundWorker内,在运行计算之前显示一些旋转动画(这本身应该在DoWork事件中完成)并在工作完成后隐藏动画(RunWorkerCompletedEvent )。
ProgressBar具有Style
属性,您可以将其设置为Marquee
以模拟无限进展。