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