您的位置:首页 > 其它

RCP学习:Splash状态栏

2013-01-08 10:49 281 查看
今天遇到个问题,Eclipse在Splash启动阶段对多线程的支持有点不同。根据某人的见解,org.eclipse.ui.internal.StartupThreading 可以解决这个问题

我看了一眼Eclipse自己的Splash实现是这样的:

private void updateUI(final Runnable r) {
Shell splashShell = getSplash();
if (splashShell == null || splashShell.isDisposed())
return;

Display display = splashShell.getDisplay();

if (Thread.currentThread() == display.getThread())
r.run(); // run immediatley if we're on the UI thread
else {
// wrapper with a StartupRunnable to ensure that it will run before
// the UI is fully initialized
StartupRunnable startupRunnable = new StartupRunnable() {

public void runWithException() throws Throwable {
r.run();
}
};
display.asyncExec(startupRunnable);
}
}


Eclipse建议的状态监控,是用IProgressMonitor来解决,使用方式是重写
org.eclipse.ui.splash.AbstractSplashHandler.getBundleProgressMonitor()这个方法。

然后提供一个IProgressMonitor,参考org.eclipse.jface.wizard.ProgressMonitorPart。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: