在SWT中滞后显示

时间:2017-08-03 16:02:57

标签: java eclipse multithreading macos

我正在使用SWT创建一个java GUI。我目前正在Mac上运行它。 GUI作为前端的过程需要一些时间才能运行(大约70分钟)。一旦我通过GUI开始这个漫长的过程,我得到彩虹旋转轮,GUI挂起,直到过程完成。有什么办法可以解决这个问题吗?它是否涉及在不同的线程上启动进程?

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须从不运行在SWT用户界面线程中花费很长时间的事情。必须经常调用SWT readAndDispatch方法。

所以,是的,你必须为任何长期运行的代码提供后台线程。

请注意,在后台线程中运行的代码无法直接访问UI控件。您必须使用Display.asyncExecDisplay.syncExec方法运行更新UI的代码。