我们需要从作业内部获取RAP 2.3中的当前显示对象以更新UI。建议的方法是什么?
答案 0 :(得分:1)
Threads in RAP文章详细说明了线程和会话如何在RAP中相互关联。
要从作业访问显示,作业需要知道它分配给哪个显示。因此,您需要将Displya传递给Job。 如果从UI线程调度作业,则典型代码可能如下所示:
static class DisplayJob extends Job {
private final Display display;
private DisplayJob( Display display ) {
super( "Job with UI Access" );
this.display = display;
}
@Override
protected IStatus run( IProgressMonitor monitor ) {
display.asyncExec( new Runnable() {
@Override
public void run() {
}
} );
return Status.OK_STATUS;
}
}
Button button = new Button( ...
button.addListener( SWT.Selection, new Listener() {
@Override
public void handleEvent( Event event ) {
new DisplayJob( event.display ).schedule();;
}
} );
请勿忘记在使用run()
的{{1}}方法访问小部件之前是否处置小部件,或使用helper therefore。
请注意,线程/会话关系并非特定于RAP,但适用于所有具有会话概念的多用户环境。