Bonjour,
Dans mon application RCP j'essaye d'utiliser les Job d'Eclipse (http://www.eclipse.org/articles/Arti.../jobs-api.html)
Mais je rencontre des difficultés pour stopper un job depuis l'interface.
Je m'explique :
Lorsque l'on clique sur le bouton exécuter de mon application je crée le job suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| job = new Job("Execution") {
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("Execution", 100);
Execution.execute(pathFile, classNameFinal, classPathFinal); //execute the code
if(monitor.isCanceled()) return Status.CANCEL_STATUS;
return Status.OK_STATUS;
}
};
job.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
if (event.getResult().isOK()) {
MessageDialog.openInformation(window.getShell(), "Arret de l'execution",
"Execution terminée avec succés");
}else{
MessageDialog.openWarning(window.getShell(), "Arret de l'execution",
"Execution du programme interrompue");
}
}
});
job.schedule(); |
la méthode :
Execution.execute(pathFile, classNameFinal, classPathFinal);
se charge de charger une classe Java et d'invoquer sa méthode main.
Mais imaginons que dans cette méthode main il y un while(true){....}
Le Job va s'exécuter sans fin.
Pour cela je met à disposition un bouton qui permet d'arrêter le Job d'exécution en cours :
1 2 3 4 5 6
| try{
ExecuteCodeAction.job.cancel();
}catch(Exception e){
e.printStackTrace();
} |
Malheureusement par ce moyen je n'arrive pas à stopper le job en question, il rentre bien dans une demande d'annulation (cancel requested)
Mais il ne s'annule pas.
Si vous pouviez me donner quelques indications cela me serait très utile
Merci à vous.
Partager