.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;
}
}
}