Eclipse rcp 是否有任何方法可以从RAP中的背景线程(作业)获取当前显示对象

Eclipse rcp 是否有任何方法可以从RAP中的背景线程(作业)获取当前显示对象,eclipse-rcp,eclipse-rap,Eclipse Rcp,Eclipse Rap,我们需要从作业内部获取RAP2.3中的当前显示对象,以更新UI。建议的方法是什么?这篇文章详细解释了RAP中线程和会话的相互关系 要从作业中访问显示器,作业需要知道其分配给哪个显示器。因此,您需要将显示传递给作业。 如果作业是从UI线程调度的,典型代码可能如下所示: 静态类DisplayJob扩展作业{ 私人最终展示; 专用显示作业(显示){ 超级(“具有UI访问权限的作业”); this.display=显示; } @凌驾 受保护的IStatus运行(IProgressMonitor监视器){

我们需要从作业内部获取RAP2.3中的当前显示对象,以更新UI。建议的方法是什么?

这篇文章详细解释了RAP中线程和会话的相互关系

要从作业中访问显示器,作业需要知道其分配给哪个显示器。因此,您需要将显示传递给作业。 如果作业是从UI线程调度的,典型代码可能如下所示:

静态类DisplayJob扩展作业{
私人最终展示;
专用显示作业(显示){
超级(“具有UI访问权限的作业”);
this.display=显示;
}
@凌驾
受保护的IStatus运行(IProgressMonitor监视器){
display.asyncExec(新的Runnable(){
@凌驾
公开募捐{
}
} );
返回状态。OK_状态;
}
}
按钮按钮=新按钮(。。。
addListener(SWT.Selection,newlistener()){
@凌驾
公共无效handleEvent(事件){
新建DisplayJob(event.display).schedule();;
}
} );
在使用
asyncExec()
-或使用


请注意,线程/会话关系并不特定于RAP,但适用于所有具有会话概念的多用户环境。

谢谢您的回答。我想我们可以将当前显示存储到会话,即RWT.getUISession().setAttribute(“显示”,显示);然后在工作中使用它。但这似乎是不可能的。