PDA

Ver la Versión Completa : Saber si una tarea se está ejecutando


leromaro
31/05/16, 03:02:03
Hola: tengo un Perfil AAA que ejecuta su tarea de entrada AAA y esta ejecuta la subtarea BBB. Quisiera saber cómo hacer para detectar cuando la subtarea BBB se está ejecutando.
Para que desde la tarea AAA no ejecute otra copia de la subtarea BBB.
En este caso no funcionaría con %PACTIVE porque me in dicaría solo el perfil y no las subtareas, no?
Estuve leyendo los post viejos porque creo haberlo leído y no lo pude encontrar.

Gracias

mlesir
31/05/16, 06:20:48
Si lo que quieres es asegurarte de que la subtarea no se vuelve a ejecutar, ve a propiedades de esa tarea (dentro de la tarea el boton de abajo a la derecha). En manejo de incompatibilidades selecciona "abortar nueva tarea". Esto hace que mientras que se este ejecutando, si por lo que sea y desde donde sea se manda realizar otra vez la tarea, esta nueva se aborta y se sigue con la que estaba.
Por otro lado la variable que biscabas no es %PACTIVE seria %TRUN ( Task RUNing o tareas ejecitandose). Toda la informacion sobre esa variable la tienes en el manual.

Enviado desde mi T1-701u mediante Tapatalk

Caravantes
31/05/16, 19:12:42
tengo un Perfil AAA que ejecuta su tarea de entrada AAA y esta ejecuta la subtarea BBB. Quisiera saber cómo hacer para detectar cuando la subtarea BBB se está ejecutando. Para que desde la tarea AAA no ejecute otra copia de la subtarea BBB.

Para ejecutar subtareas, el mejor control se hace desde la acción que lanza la subtarea. La acción REALIZAR TAREA se configura indicando cuál es la tarea a lanzar, y otros detalles. Uno de esos detalles interesantes es la PRIORIDAD. Si la subtarea es lanzada con más prioridad que la tarea principal, ocurrirá que la subtarea se ejecutará en primer lugar, mientras la tarea principal permanece en espera; y luego de que se ha finalizado con la subtarea completa, se continuará con las acciones pendientes de la tarea principal. Por el contrario, si la subtarea es lanzada con menos prioridad, esa subtarea permanece a la espera porque primero se seguirá ejecutando la tarea principal hasta finalizar, y luego se ejecutará la subtarea. Si ambas tareas tienen igual prioridad, creo que se irá ejecutando una acción de cada una, alternativamente. La prioridad puede establecerse desde 0 (cero) hasta 50. En cualquier tarea puedes usar la variable %priority que contiene la prioridad de la propia tarea. Por ese motivo, en la acción REALIZAR TAREA yo suelo asignar a las subtareas la prioridad %priority + 1, y de este modo la subtarea siempre tiene un punto de prioridad más que la tarea principal, con lo cual tengo certeza de que la subtarea se ejecuta primero, y mientras tanto la tarea principal queda en espera. También puedes poner %priority - 1 si quieres que ocurra al contrario.

Mlesir ha apuntado los otros dos aspectos interesantes del tema:

- Que la variable %TRUN contiene una lista con el nombre de todas las tareas que se están ejecutando (nombres separados por comas, incluyendo coma inicial y coma final, de forma similar a la variable %PACTIVE). Si quieres saber si la subtarea BBB se está ejecutando, la condición es
%TRUN ~ *,BBB,*

- Gestión de incompatibilidades de la subtarea, pudiendo: abortar la tarea previa, abortar la nueva tarea o ejecutar ambas a la vez.

Creo que no hay más trucos para enfocar este asunto, pero a mi me parecen suficientes.
Quizá te aclare algo más el siguiente post:

Subtareas y tareas principales. Coordinación entre ellas.
http://www.htcmania.com/showthread.php?p=11710616#post11710616

leromaro
31/05/16, 20:00:47
Muchas gracias a ambos, como siempre muy precisos y completos en la información.
Mlesir %TRUN era la que estaba buscando y no lo pude encontrar. Muchas gracias.
Caravantes leí tu post sobre las subtareas, pero para lo que necesitaba era muy complejo, seguramente cuando tenga más tiempo iré cambiando la prioridad al perfil y viendo como se ejecuta para que quede más aceitado el proceso.
Muchas gracias a ambos