我想在阅读excel文件时显示进度。我共享一个Object,它包含最大行号和读取的最后一行数。 每隔150行将值保存在我的对象中,我将其放入等待状态,并停止读取,直到对象解锁。为什么Object#等待不是Display.asyncExec或Display.asyncExec的“合理机会”?
在我的对话窗口中,我尝试使用syncExec或asyncExec方法更新ProgressBar
,并在Object中使用值。对象在调用方法后立即解锁。
我知道那些方法正在等待最适合的场合来运行runnables。然而,我似乎不明白的是,为什么这些方法不被执行,如果没有任何运行时,他们被称为?
我的实际情况是,asyncExec仅在读取过程结束时更新ProgressBar,而synExec挂起应用程序,因为它在对象#等待运行时无法执行。
感谢您的阅读并感谢您的回答。
这是读取Excel中的对象有一个'FileDialog'选择文件。因此,我不得不用'Display.syncExec'来调用它,并且实际上是对事件循环的线程进行了死锁。 – ArtiBucco 2012-07-10 10:19:06