-1

我有一个在向导结束时运行的进度对话框。需要大量时间的操作必须在 UI 线程上完成。是否有某种方式可以在操作进行时更新进度条?

谢谢,

4

2 回答 2

0

您可以尝试dlg.paintAll(dlg.getGraphics());,但手动刷新的问题是对话框仅在您调用时以给定的间隔刷新。因此,当用户单击前面的某个其他窗口并想稍后检查它的进度时,他将在下一次刷新发生之前看到它。

为什么不能在线程中执行代码?您将 ProgressDialog 创建为模态,然后启动工作线程并在执行后将进度设置为可见。您可以在线程中更新它,也可以在线程中关闭它。主线程将阻塞,直到工作人员完成并保持可见。

于 2013-06-26T16:22:28.627 回答
0
  1. fork在要运行的调用中设置参数false
  2. 继续“泵送” UI 事件 - 详情请参阅Display::readAndDispatch

你确定这应该在 UI 线程中完成吗?在大多数情况下,最终在非 UI 线程中使用Display::asyncExecor卸载 UI 内容要容易得多Display::syncExec

于 2013-06-26T16:23:37.857 回答