IWorkbenchListener preShutdown 优先级/顺序?
IWorkbenchListener preShutdown priority / order?
所以,我有这个 Eclipse RCP 应用程序,它通过 JNI 在幕后管理一些 Qt 资源。 Qt 老手会知道 QApplication 和 Qt GUI 对象不喜欢在 main/GUI 线程之外构造和销毁。使用 IStartup 构造 QApplication 不是问题,但事实证明在关闭时销毁 QApplication 很困难。当根据 Qt 的要求在 GUI 线程 上调用 preShutdown 时,我正在使用 IWorkbenchListener 清理我的 Qt 资源。当其他 IWorkbenchListeners 在 我的 preShutdown 被调用后否决关闭 时,就会出现问题。我需要防止这种情况。
有什么方法可以强制或确保最后调用我的 preShutdown 吗?或者是否有任何其他新颖的方法可以在 GUI 线程关闭之前 last 执行某些代码?
如果您的 RCP 实现了 IApplication
,您可以在 PlatformUI.createAndRunWorkbench
退出后添加代码。
您也可以试试Display
的disposeExec
方法。 Runnable
您传递的信息是在处理显示之前调用此方法。
IWorkbenchListener.postShutdown() 根据需要工作。
所以,我有这个 Eclipse RCP 应用程序,它通过 JNI 在幕后管理一些 Qt 资源。 Qt 老手会知道 QApplication 和 Qt GUI 对象不喜欢在 main/GUI 线程之外构造和销毁。使用 IStartup 构造 QApplication 不是问题,但事实证明在关闭时销毁 QApplication 很困难。当根据 Qt 的要求在 GUI 线程 上调用 preShutdown 时,我正在使用 IWorkbenchListener 清理我的 Qt 资源。当其他 IWorkbenchListeners 在 我的 preShutdown 被调用后否决关闭 时,就会出现问题。我需要防止这种情况。
有什么方法可以强制或确保最后调用我的 preShutdown 吗?或者是否有任何其他新颖的方法可以在 GUI 线程关闭之前 last 执行某些代码?
如果您的 RCP 实现了 IApplication
,您可以在 PlatformUI.createAndRunWorkbench
退出后添加代码。
您也可以试试Display
的disposeExec
方法。 Runnable
您传递的信息是在处理显示之前调用此方法。
IWorkbenchListener.postShutdown() 根据需要工作。