2016-04-04 3 views
-1

Я написал способ загрузки некоторых файлов из Интернета (в моем веб-проекте C#, mvc). тот же файл должен скачиваться каждый день между конкретным временем (потому что он обновляется) .it отлично работает в тестовой среде. моя проблема в том, что система находится в режиме реального времени, так как она работает правильно в тестовой среде. просто чтобы показать, что это методвыполняет автоматические методы обновления в режиме C# в режиме реального времени

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); 

     } 

ответ

1

Может быть (работает ли что-то на определенной среде полностью зависит от окружающей среды, - мы не можем сказать, возможно).

Если что-то убьет ваш процесс или пул приложений настроен на повторное использование, которое изменяет конкретный путь выполнения, или есть исключение и т. Д., Т. Е. Ваш таймер будет удален. Вы этого не хотите.

В качестве альтернативы рассмотрите запланированную задачу. В зависимости от того, сколько у вас контроля над сервером, вы можете включить это в задание, которое выполняется, и позволить Windows управлять расписанием, а не с помощью таймеров. Для этого есть несколько преимуществ.

В двух словах - ваши шаги в этом будет:

  1. Выписка из соответствующих частей кода (части, которые должны регулярно запускать и все зависимости) в C# консольного приложения
  2. Настройте планировщик задач Windows для запуска этого консольного приложения в определенное время
  3. Проверьте это!

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