我有一个在向导结束时运行的进度对话框。需要大量时间的操作必须在 UI 线程上完成。是否有某种方式可以在操作进行时更新进度条?
谢谢,
我有一个在向导结束时运行的进度对话框。需要大量时间的操作必须在 UI 线程上完成。是否有某种方式可以在操作进行时更新进度条?
谢谢,
您可以尝试dlg.paintAll(dlg.getGraphics());
,但手动刷新的问题是对话框仅在您调用时以给定的间隔刷新。因此,当用户单击前面的某个其他窗口并想稍后检查它的进度时,他将在下一次刷新发生之前看到它。
为什么不能在线程中执行代码?您将 ProgressDialog 创建为模态,然后启动工作线程并在执行后将进度设置为可见。您可以在线程中更新它,也可以在线程中关闭它。主线程将阻塞,直到工作人员完成并保持可见。
fork
在要运行的调用中设置参数false
Display::readAndDispatch
。你确定这应该在 UI 线程中完成吗?在大多数情况下,最终在非 UI 线程中使用Display::asyncExec
or卸载 UI 内容要容易得多Display::syncExec