在Eclipse RAP中如何将当前UI状态推送/强制到客户端?

时间:2017-06-21 07:17:58

标签: java eclipse eclipse-rap

我使用Eclipse RAP并具有以下用例:

  • find字段中输入搜索文字并开始搜索
  • Text文字更改为"搜索...."
  • 执行实际搜索(异步)并在Label
  • 中显示结果

问题是,即使标签在实际搜索开始之前应更改为"搜索...." ,也会更改为&#34 ;搜索完成后搜索...."

我正在寻找的是在搜索之前标签更改后将当前UI状态推送/强制/更新到客户端的方法:

  • Table字段中输入搜索文字并开始搜索
  • Text文字更改为"搜索...."
  • 将当前的UI状态推送到客户端
  • 执行实际搜索(异步)并在Label
  • 中显示结果

这里有一些示例代码:

Table

1 个答案:

答案 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 ....);
 }