.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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д