2010-09-27 9 views
2

Donc, ma situation est que je cours une application sur le planificateur de tâches de Windows. Cette application est exécutée une fois par jour à 13 heures. l'application effectue des requêtes et transfère des données sur un site FTP. Tout cela fonctionne très bien sauf les week-ends où je ne suis pas ici l'application est lancée et l'interface graphique est toujours affichée pour que je puisse l'examiner. Cela semble le faire cesser de fonctionner sur le planificateur jusqu'à ce que je ferme l'application. Donc, le samedi, il va courir et l'application restera affichée pour moi de revoir quand je reviens le lundi. mais le dimanche, lorsque le planificateur tente de l'exécuter à nouveau, il échouera car l'application n'a pas été fermée.Windows Task Scheduler n'exécutera l'application qu'une seule fois

D'abord laissez-moi confirmer que c'est ainsi que le planificateur de tâches est censé fonctionner. Deuxièmement, quelles sont mes alternatives pour la programmation à exécuter tous les jours et garder l'interface graphique affichée afin que je puisse examiner. L'application peut s'exécuter plusieurs fois car chaque session n'interfère pas avec les autres sessions. Donc, si je suis parti pour une semaine en vacances, je m'attendrais à ce que quand je reviens que 7 instances de l'application ont été exécutés et attendent mon avis.

Merci AGP

Répondre

0

Ceci est le comportement par défaut du système de tâche planifiée, car il ne sait pas que le travail est terminé jusqu'à ce que l'application sort réellement. Par conséquent, si votre application est toujours ouverte après 24 heures, l'exécution suivante sera simplement ignorée car l'exécution en cours est "toujours en cours" en ce qui concerne le planificateur.

Personnellement, je reviendrais sur la façon dont vous gérez votre processus de travail, car vous configurez un scénario qui sera difficile à gérer à long terme.

+0

Nul doute que je reviendrai sur le processus. J'ai commencé en l'exécutant manuellement pendant une semaine et en examinant les résultats. Une fois que j'étais satisfait du processus, je l'ai mis sur le planificateur, mais je veux toujours vérifier les erreurs au moins jusqu'à ce que je suis sûr qu'il peut être exécuté automatiquement sans erreurs. – sinDizzy

1

Votre meilleur choix est d'éliminer l'interface utilisateur et de consigner les messages dans le journal des événements ou dans un fichier journal. L'interface utilisateur peut être générée à partir de l'interface de ligne de commande en tant que processus séparé si vous préférez, mais cela doit être fait dans son propre processus non-enfant.

Vous pouvez également exécuter un fichier de commandes au lieu du processus directement. Dans le fichier de commandes, appelez "START path_to_exe" au lieu de l'EXE. Cela entraînera la "finition" du fichier séquentiel et l'exe à exécuter dans son propre processus. C'est pas une bonne solution à long terme, mais vous donnera une solution temporaire à votre problème immédiat.

+0

Pendant ce temps, je dois revoir manuellement un jeu de données, donc je ne peux pas écrire pour le moment dans un fichier journal. Mais vous m'avez donné de bonnes idées. J'ai également regardé les planificateurs tiers, mais comme cela a été dit, ce sont toutes des solutions temporaires. Votre point de vue est dûment noté. – sinDizzy

0

Je recommande d'écrire dans un fichier journal au lieu d'afficher une interface utilisateur pour toute sortie et/ou erreurs. De cette façon, l'application peut écrire, puis quitter, et vous pouvez consulter le journal à votre convenance. C'est une solution très courante pour les processus automatisés.