1 votes

Conditions de course dans Tasker ?

J'essaie d'apprendre Tasker, et il semble qu'il exécute ses étapes de manière asynchrone, de sorte que je me retrouve avec une condition de course où ma tâche n'a pas les données dont elle a besoin pour continuer. J'ai créé une simple paire de tâches pour tester. (Informations matérielles : LG G2 sur Verizon avec la ROM KitKat, rooté)

Tâche 1 : Echo

  1. Ensemble de variables : [Nom : %ret ; To : %par1]
  2. Flash : [Texte : Par1 = %par1]
  3. Retourner : [Valeur : %ret ; Stop : On]

Tâche 2 : Test de l'écho

  1. Exécuter la tâche : [Nom : Echo ; Priorité : 2 ; Paramètre 1 (%par1) : 5 ; Variable de valeur de retour : %var]
  2. Ensemble de variables : [Nom : %dbl ; To : %var * 2 ; Do Maths : On]
  3. Flash : [Texte : %var * 2 = %dbl]

Résultat attendu :

  1. Flash : "Par1 = 5"
  2. Flash : "5 * 2 = 10"

Rendement réel :

  1. Flash : "%var * 2 = 0"
  2. Flash : "Par1 = 5"

Ma question est la suivante : pourquoi Tasker n'attend-il pas la fin de l'étape 1 avant de passer à l'étape 2 ? En fait, je ne suis même pas sûr qu'il fonctionne correctement. Dans ma tâche Echo Test, j'ai ajouté une attente de 2 secondes après avoir appelé la tâche Echo, et maintenant ma sortie est la suivante :

  1. Flash : "Par1 = 5"
  2. Flash : "%var * 2 = 0"

Ainsi, le %var ne semble pas être définie du tout. Est-ce que je fais quelque chose de mal, ou est-ce que mon installation de Tasker est mauvaise ?

3voto

The3rdIcon Points 295

Il existe deux solutions possibles.

Premièrement, lorsque vous utilisez "Exécuter une tâche", vous pouvez choisir la priorité de la tâche que vous lui demandez d'exécuter. Si vous définissez une priorité identique ou supérieure à celle de la tâche en cours (une bonne façon de le faire est de spécifier %priority + 1 ), la nouvelle tâche s'exécutera complètement avant que la tâche en cours ne reprenne. Si la priorité de la tâche est inférieure à celle de la tâche en cours, cette dernière se terminera avant que la nouvelle tâche ne commence.

Comme j'ai obtenu des résultats mitigés avec l'utilisation de la priorité, vous pourriez ajouter un "Attendre jusqu'à" après la tâche d'exécution. Exemple :

1. WAIT UNTIL
      MIN: 1
      UNTIL: %Done IS SET

La variable, %Done est défini à la dernière ligne de la tâche que vous avez appelée. Vous pouvez définir %Done à quoi que ce soit, mais une fois qu'elle est réglée, la première tâche sait qu'elle peut continuer.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X