2016-04-04 3 views
-1

J'ai écrit une méthode pour télécharger des fichiers à partir d'Internet (dans mon projet web C#, mvc.). le même fichier doit être téléchargé chaque jour entre une heure spécifique (car il met à jour). Il fonctionne correctement dans l'environnement de test. Mon problème est que si le système est en fonctionnement, il fonctionne correctement de la même manière dans l'environnement de test. juste pour montrer, c'est la méthodemet à jour les méthodes de mise à jour automatique dans C# travail sur l'environnement en direct

public void setupTimer(TimeSpan savingTime) 
     { 

      DateTime current = DateTime.Now; 
      TimeSpan timeTogo = savingTime - current.TimeOfDay; 

      if (timeTogo < TimeSpan.Zero) 
      { 
       return; 
      } 

      this.timer = new Timer(x => 
      { 
       this.saveXmlFile(); 
      }, null, timeTogo, InfiniteTimeSpan); 

     } 

Répondre

1

Peut-être (si quelque chose fonctionne sur un environnement particulier dépend entièrement de l'environnement - nous ne pouvons pas dire peut-être).

Si quelque chose tue votre processus, ou qu'un pool d'applications est configuré pour recycler ce qui modifie un chemin d'exécution particulier, ou s'il y a une exception, etc., votre minuteur sera éliminé. Tu ne veux pas ça. En outre, considérez une tâche planifiée. En outre,

En fonction du contrôle que vous avez sur le serveur, vous pourrez peut-être prendre en compte ce travail et permettre à Windows de gérer le planning plutôt que d'utiliser des minuteurs. Il y a de multiples avantages à cela.

En bref - vos étapes pour y parvenir serait:

  1. Extrait les parties pertinentes de votre code (les parties qui doivent fonctionner régulièrement et toutes les dépendances) dans une application console C#
  2. Configurer le planificateur de tâches Windows pour exécuter cette application de console à un moment donné
  3. Testez-le!

http://windows.microsoft.com/en-gb/windows/schedule-task#1TC=windows-7