Exemplo n.º 1
0
        /// <summary>
        /// Процесс бэкапа
        /// </summary>
        /// <param name="args"></param>
        private void BackupProcess(object args)
        {
            var lErrors = new List <string>();
            var tParams = (args as TParams);

            tParams.CheckConflicts();
            var i = 0;

            foreach (var f in tParams.lFiles)
            {
                //пометка о начале операции
                SetCheckBox(i, null);
                var aimPath = tParams.mainFolder;
                //Изменение целевой директории при дубле
                if (tParams.Conflicts[i])
                {
                    aimPath = tParams.mainFolder + "\\" + f.Name;
                    Directory.CreateDirectory(aimPath);
                }
                //операция
                if (SaveOpen.DoCopy(f.PathString, aimPath))
                {
                    //пометка о завершении операции с успехом
                    SetCheckBox(i, true);
                }
                i++;
            }
            //Архивирования
            if (SaveOpen.settings.Options.DoZip)
            {
                SetCheckBox(i, null);
                ZipFile.CreateFromDirectory(tParams.mainFolder, tParams.mainFolder + ".zip");
                SetCheckBox(i, true);
                i++;
                //Удаление не архивированной копии
                if (SaveOpen.settings.Options.DeleteAfterZip)
                {
                    SetCheckBox(i, null);
                    Directory.Delete(tParams.mainFolder, true);
                    SetCheckBox(i, true);
                    i++;
                }
            }
            //Завершение
            SaveOpen.settings.Options.LastBackup = DateTime.Now;//пометка о выполненнии Бэкапа
            this.Dispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(delegate()
            {
                State = 0;
                //Закрытие программы
                if (SaveOpen.settings.Options.CloseAfterBackup && lErrors.Count == 0)
                {
                    this.Owner.Close();
                }
                else
                {
                    MessageBox.Show("Process finished", "Finish", MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }));
        }