/// <summary> /// Вызов копировальщика, в соответствие с типом item /// </summary> /// <param name="items">список объектов для копирования</param> /// <param name="dest">каталог назначения</param> /// <param name="interval">интервал копирования</param> public void Copy(List <Item> items, string dest, int interval, bool isDeleteMode) { ICopier copier = null; foreach (var item in items) { if (!item.IsHandled) { lock (_locker) { item.IsHandled = true; if (item.IsDirectory) { copier = DirectoryRecursiveCopier.GetCopier(); } else { copier = FileCopier.GetCopier(); } copier.Copy(item.Name, Path.Combine(dest, Path.GetFileName(item.Name)), isDeleteMode); Thread.Sleep(interval); } } } }
/// <summary> /// Возвращает экземпляр копировальщика. /// </summary> /// <returns>экземпляр копировальщика</returns> public static DirectoryRecursiveCopier GetCopier() { if (_instance == null) { lock (_locker) { _instance = new DirectoryRecursiveCopier(); } } return(_instance); }