如果您可以对作业添加较小的更改,请使用OSGI事件在它们之间进行通信。 Asume,你有一个这样的工作:
public class SomeJob extends Job {
public static final JOB_EVENT_NAME = "some distinct name";
private IEventBroker eventBroker;
public SomeJob(IEventBroker eventBroker) {
super("SomeJob");
this.eventBroker = eventBroker;
}
protected IStatus run(IProgressMonitor monitor) {
...
eventBroker.post(JOB_EVENT_NAME, some data);
...
}
}
与之相连的事件监听RCP应用程序启动它(eventBroker是IEventBroker并且可以@ Inject'ed):
new CheckAccessLevelJob(eventBroker).schedule();
eventBroker.subscribe(SomeJob.JOB_EVENT_NAME, new EventHandler() {
public void handleEvent(Event event) {
event.getProperty(IEventBroker.DATA);
}
});
可惜我不能碰我需要听的工作。我没有写他们,我没有来源 – stwissel
顺便说一句,大多数工作不使用家庭。因此,您可以使用null系列对象找到它们:Platform.getJobManager()。find(null)。 – Oroboros102