Tutoriel: meilleure façon de mettre sur pause #
Le problème: prochaineImagePartie
est encore exécutée
#
- NOTE on voit que la tâche est encore exécutée environs 60 fois par secondes
La solution: appeler inputs.cancelTask("afficherVuePartie")
#
-
En annulant (
cancel
) la tâcheafficherVuePartie
, ça va bloquer la tâcheprochaineImagePartie
parce qu’elle dépend deafficherVuePartie
-
Dans
frontal.taches.Navigation
public class Navigation { // ... // modifier cette méthode private static void afficherVuePartie(FrontendTasks subTasks, FrontendTasks tasks) { subTasks.task("afficherVuePartie") .waitsFor(event(EvtAfficherPartie.class)) .waitsFor(created(VueRacine.class)) .waitsFor(created(VuePartie.class)) .executes(inputs -> { // ajouter inputs.cancelTask("afficherVueFileAttente"); SessionPong session = Ntro.session(); EvtAfficherPartie evtAfficherPartie = inputs.get(event(EvtAfficherPartie.class)); VueRacine vueRacine = inputs.get(created(VueRacine.class)); VuePartie vuePartie = inputs.get(created(VuePartie.class)); evtAfficherPartie.appliquerA(session) .appliquerA(vueRacine, vuePartie); }); } // modifier cette méthode private static void afficherVueFileAttente(FrontendTasks tasks) { tasks.task("afficherVueFileAttente") .waitsFor(event(EvtAfficherFileAttente.class)) .waitsFor(created(VueRacine.class)) .waitsFor(created(VueFileAttente.class)) .executes(inputs -> { // ajouter inputs.cancelTask("afficherVuePartie"); SessionPong session = Ntro.session(); EvtAfficherFileAttente evtAfficherFileAttente = inputs.get(event(EvtAfficherFileAttente.class)); VueRacine vueRacine = inputs.get(created(VueRacine.class)); VueFileAttente vueFileAttente = inputs.get(created(VueFileAttente.class)); evtAfficherFileAttente.appliquerA(session) .appliquerA(vueRacine, vueFileAttente); }); } // ...
Vérifier que ça fonctionne #
-
Exécuter pour vérifier
$ sh gradlew pong
- NOTE on voit que
prochaineImagePartie
n’est pas exécutée quand on affiche la file d’attente
- NOTE on voit que