我有一个类扩展了
MessageConsole
类,该类需要其超级构造的实例
super(String name, ImageDescriptor imgDescriptor)
. 用于创建
ImageDescriptor
如下所示:
ImageDescriptor.createFromImage(Activator.getImage(SharedImages.SPECIFIC_IMAGE));
此方法随机导致
org.eclipse.swt.SWTError: Invalid thread access
因为在调用它的那一刻,工作台可能会启动,也可能不会启动。
我读过
here
我需要在其中运行函数
sync
或
async
模式,以便在UI上正确执行操作,因此我创建了以下方法:
private static ImageDescriptor createImageDescriptor() {
Activator.getMyService().runSync(new Runnable() {
public void run() {
ImageDescriptor.createFromImage(Activator.getImage(SharedImages.JUSTIFICATION));
}
});
return null;
}
runSync
是一个包装的
syncExec
,它在调用之前添加了一些检查。你可以考虑
syncExec公司
而不是
运行同步
.
我如何返回创建的
图像描述符
所以我可以把它传给
super
构造函数?