我使用Eclipse RAP并具有以下用例:
find
字段中输入搜索文字并开始搜索Text
文字更改为"搜索...." Label
问题是,即使标签在实际搜索开始之前应更改为"搜索...." ,也会更改为&#34 ;搜索完成后搜索...." 。
我正在寻找的是在搜索之前标签更改后将当前UI状态推送/强制/更新到客户端的方法:
Table
字段中输入搜索文字并开始搜索Text
文字更改为"搜索...." Label
这里有一些示例代码:
Table
答案 0 :(得分:2)
asyncExec
仍在UI线程中运行代码,只是稍微延迟它,直到下一次调用Display.readAndDispatch
。因此,您的搜索代码仍会阻止,并且不允许标签更新。
您需要在单独的线程中实际运行搜索。
asyncExec
旨在用于后台线程,以便在可能的情况下在UI线程中运行少量代码。 (您需要在后台线程中使用Display.getDefault()
而不是Display.getCurrent()
。
因此,在您的后台主题中,您可以执行以下操作:
while (more to do)
{
.... do a step of the search
Display.getDefault().asyncExec(.... UI update code ....);
}