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

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

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

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

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

textual
Листинг программы
    [Serializable]
    class BackupItem : IDisposable
    {
        /// <summary>
        /// Path to the file or directory
        /// </summary>
        public string Path { get; set; }
        /// <summary>
        /// Last time of file changing
        /// </summary>
        public DateTime LastChangedDate { get; private set; }
        /// <summary>
        /// Last time of backup
        /// </summary>
        public DateTime LastBackupDate { get; private set; }
        /// <summary>
        /// Interval of backuping
        /// </summary>
        public TimeSpan BackupInterval{ get; set;}
 
        [NonSerialized]
        private FileSystemWatcher Watcher{get; set;}
 
        public void StartWatch()
        {
            Watcher = new FileSystemWatcher(Path);
            Watcher.Changed += delegate { LastChangedDate = DateTime.Now; };
        }
 
        public void Dispose()
        {
            Watcher.Dispose();
        }
 
        public void Buckup()
        {
            if (DateTime.Now < LastBackupDate.Add(BackupInterval))//если уже пришло время бекапа
            {
                if (LastChangedDate > LastBackupDate)//если файл был изменен после последнего бекапа
                {
                    //делаем бекап
                    //...
                }
                //запоминаем время последнего бекапа
                LastBackupDate = DateTime.Now;
            }
        }
    }

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


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

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

7   голосов , оценка 3.286 из 5
Похожие ответы