2008-10-10 12 views
1

J'écris des plugins Eclipse où il y a pas mal de tâches en cours d'exécution.Existe-t-il un équivalent à Thread.sleep pour les tâches Eclipse?

Dans certains cas, je souhaite que le travail "dorme" pendant un certain temps au point d'exécution actuel et continue à partir de ce point (plutôt que de replanifier le travail et de le démarrer à partir de zéro). Je crois comprendre que l'utilisation de Thread.sleep dans les travaux Eclipse est plutôt obsolète.

Existe-t-il une alternative acceptable pour accomplir ceci?

Répondre

3

Je pense que votre meilleur pari peut-être de reprogrammer le travail et reprendre là où vous vous étiez arrêté. Quelque chose comme:

class MyJob { 
    int state; 
    IStatus run(IProgressMonitor m) { 
    if (state == 0) { 
     phase1(); 
     schedule(1000); 
    } 
    else if (state == 1) { 
     phase2(); 
    } 
    return Status.OK; 
    } 
    void phase1() { 
    state = 1; 
    } 
    void phase2() { 
    state = 2; 
    } 
} 
+0

Je pense que c'est la bonne approche. Les tâches sont conçues pour effectuer une tâche et se déplacer. Garder une trace de l'état vous donnerait la fonctionnalité que vous demandez. – AdamC

+0

J'ai quelques démons et travaux de décoration qui s'exécutent de manière asynchrone mais qui dans certaines conditions nécessitent une pause. Ce que vous décrivez est à peu près ce que je fais en ce moment, mais cela complique le code, j'espérais qu'il y avait un appel élégant qui me manquait ... – Uri