J'écris des plugins Eclipse, et j'ai souvent une situation où un Job en cours d'exécution doit faire une pause pendant un court moment, exécuter quelque chose de manière asynchrone sur le thread de l'interface utilisateur, et reprendre.Quelle est la meilleure façon d'obtenir une valeur de retour d'un asyncExec dans Eclipse?
Donc, mon code ressemble généralement à:
Display display = Display.getDefault();
display.syncExec(new Runnable() {
public void run() {
// Do some calculation
// How do I return a value from here?
}
});
// I want to be able to use the calculation result here!
Une façon de le faire est d'avoir toute la classe d'emploi ont un champ. Un autre est d'utiliser une classe personnalisée (plutôt que anonyme pour cela et utiliser son champ de données résultant, etc Quelle est la meilleure et la plus élégante approche?
Vous devez clarifier l'instruction "exécuter quelque chose de manière asynchrone sur le thread UI" car votre code utilise clairement display.syncExec, ce qui signifie que le thread de votre travail s'arrêtera pendant que le code de run() est exécuté. – SCdF
Le titre et le texte de la question indiquent 'asyncExec', mais l'exemple de code a' syncExec'. Ce deux problèmes très différents! Laquelle est-ce? – Lii