我正在实现一个更新功能,它将使用服务器响应来处理更新。现在,我的更新需要让用户(在对话框中)重新启动应用程序。我只能在该类中进行的注入是IEclipseContext。

现在,如何获得当前正在运行的Eclipse RCP应用程序的UISynchronize?这样我就可以安全地运行此方法:

private void showMessage(UISynchronize sync, final String message) {
        sync.syncExec(new Runnable() {

            @Override
            public void run() {
                MessageDialog.openInformation(null, "Information", message);
            }
        });
    }

最佳答案

UISynchronize位于应用程序IEclipseContext中,因此它将在OSGi服务上下文以外的任何上下文中可用。

UISynchronize所做的只是调用Display.asyncExec,因此,如果您没有可用的上下文,请使用传统的

Display.getDefault().asyncExec(....)

07-24 09:22