如果您可以對作業添加較小的更改,請使用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