.NET 4.x Служба Windows и параллельное программирование - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, пишу свою службу Windows и приложение к нему. Будет эта связка бэкапить файлы/папки которые выбираются. Пока пишу службу, реализовал класс бэкапа файла(именно одного файла), но после понял что количество файлов может быть много, начал думать в сторону потоков/паралельного/асинхронного программирования и совсем запутался. В мечтах чтобы каждый поток следил за своим экземпляром и реагировал на ивенты своего экземпляра. Как это можно реализовать? Или есть другое более рациональное решение? Подскажите господа, буду признателен.

Решение задачи: «.NET 4.x Служба Windows и параллельное программирование»

textual
Листинг программы
  1.     [Serializable]
  2.     class BackupItem : IDisposable
  3.     {
  4.         /// <summary>
  5.         /// Path to the file or directory
  6.         /// </summary>
  7.         public string Path { get; set; }
  8.         /// <summary>
  9.         /// Last time of file changing
  10.         /// </summary>
  11.         public DateTime LastChangedDate { get; private set; }
  12.         /// <summary>
  13.         /// Last time of backup
  14.         /// </summary>
  15.         public DateTime LastBackupDate { get; private set; }
  16.         /// <summary>
  17.         /// Interval of backuping
  18.         /// </summary>
  19.         public TimeSpan BackupInterval{ get; set;}
  20.  
  21.         [NonSerialized]
  22.         private FileSystemWatcher Watcher{get; set;}
  23.  
  24.         public void StartWatch()
  25.         {
  26.             Watcher = new FileSystemWatcher(Path);
  27.             Watcher.Changed += delegate { LastChangedDate = DateTime.Now; };
  28.         }
  29.  
  30.         public void Dispose()
  31.         {
  32.             Watcher.Dispose();
  33.         }
  34.  
  35.         public void Buckup()
  36.         {
  37.             if (DateTime.Now < LastBackupDate.Add(BackupInterval))//если уже пришло время бекапа
  38.             {
  39.                 if (LastChangedDate > LastBackupDate)//если файл был изменен после последнего бекапа
  40.                 {
  41.                     //делаем бекап
  42.                     //...
  43.                 }
  44.                 //запоминаем время последнего бекапа
  45.                 LastBackupDate = DateTime.Now;
  46.             }
  47.         }
  48.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы