Eclipse rcp 在应用程序周围发送关闭消息

Eclipse rcp 在应用程序周围发送关闭消息,eclipse-rcp,e4,application-shutdown,Eclipse Rcp,E4,Application Shutdown,我有一个Eclipse4应用程序,它有多个到不同服务器的连接。现在,当打开MPart时,部件将调用服务器以接收其数据。此外,当MPart关闭时,客户机将close发送到服务器,以便客户机知道客户机不需要更新数据 现在我需要找到一种方法让MPart知道客户端正在关闭。这样他们就不会向服务器发送任何消息。这将加速客户端的关闭 当用户单击关闭按钮时,如何向Mpart发送关闭命令?使用事件代理向部件发送消息 在关机代码中发送一个事件: @Inject IEventBroker事件经纪人; send(“m

我有一个Eclipse4应用程序,它有多个到不同服务器的连接。现在,当打开MPart时,部件将调用服务器以接收其数据。此外,当MPart关闭时,客户机将close发送到服务器,以便客户机知道客户机不需要更新数据

现在我需要找到一种方法让MPart知道客户端正在关闭。这样他们就不会向服务器发送任何消息。这将加速客户端的关闭


当用户单击关闭按钮时,如何向Mpart发送关闭命令?

使用事件代理向部件发送消息

在关机代码中发送一个事件:

@Inject
IEventBroker事件经纪人;
send(“my/topic/shutdown”,数据);
其中,
data
是要与shudown事件关联的任何数据

“my/topic/shutdown”
只是事件的唯一id

使用
send
方法同步发送事件,使用
post
异步发送事件

每个部分都可以通过以下方式订阅活动:

@Inject
@可选的
公共无效关闭(@EventTopic(“my/topic/shutdown”)事件)
{
....
}
Event
org.osgi.service.Event.Event

如果希望保证方法在UI线程中运行,也可以使用
@UIEventTopic

要处理对应用程序“关闭”按钮的点击,您需要将
org.eclipse.e4.ui.workbench.modeling.IWindowCloseHandler
的实现放入主窗口的eclipse上下文中。你可以在你的生命周期课程中这样做(如果你有)。应用程序启动完成事件适用于以下情况:

@可选
@注入
public void appStartupComplete(@UIEventTopic(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE)事件事件,MapApplication应用程序,EModelService modelService)
{
MWindow window=(MWindow)modelService.find(“窗口id”,app);
IEclipseContext windowContext=window.getContext();
set(IWindowCloseHandler.class,ContextInjectionFactory.make(AppCloseHandler.class,windowContext));

如何连接到close butun以发送事件?什么关闭按钮?屏幕右侧的红十字(在WIndows中)。使用IWindowCloseHandler-添加到answerI added workbenchContext.set(IWindowCloseHandler.class,new EclipseCloseHandler());在我的应用程序生命周期中创建我的PostContext。按关闭按钮时不会调用处理程序。