private void tPlan_Tick(object sender, EventArgs e) { try { if (schedul.Started) { Scheduler.CSchedulTimes time; while ((time = schedul.GetNextDate()) != null) { if (time.IsOnlyNow()) { if (CFI != null) if (CFI.Running) { LogWrite("Процесс по расписанию не был запущен из-за того, что предыдущий процесс не был завершён"); return; } if (lstUser.Items.Count > 0) { string[] strArgs = new string[lstUser.Items.Count]; lstUser.Items.CopyTo(strArgs, 0); LogWrite("Операция начата по расписанию"); StartProcedure(strArgs); } } } } } catch (Exception ex) { CFI = null; LogWrite(ex.Message); } }
void _Go() { try { if (!btnGo.Enabled) return; if (schedul.Started) { tPlan.Stop(); if (CFI != null) CFI.Stop(); CFI = null; Text = "Расписание отменено пользователем"; LogWrite("Расписание отменено пользователем"); schedul.Stop(); ToWorkingMode(false); return; } if (CFI != null) { if (CFI.Running) { if (CFI.Stop()) { ToWorkingMode(false); Text = "Отменено пользователем"; LogWrite("Процесс был остановлен пользователем"); } CFI = null; return; } CFI = null; } if (ExitGuar) return; if (!VerUpdatePath() || !VerToUpdatePath()) return; if (!TestPaths()) return; ListBox.ObjectCollection allObjs = lstUser.Items; if (allObjs.Count > 0) { ListBox.SelectedObjectCollection selObjs = lstUser.SelectedItems; System.Windows.Forms.DialogResult dres; if (selObjs.Count <= 0) dres = System.Windows.Forms.DialogResult.No; else if (selObjs.Count < allObjs.Count) dres = MessageBox.Show(this, "Обновить только выделенные?", "Вопрос", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information); else dres = System.Windows.Forms.DialogResult.No; string[] strArgs; switch (dres) { case System.Windows.Forms.DialogResult.Yes: strArgs = new string[selObjs.Count]; selObjs.CopyTo(strArgs, 0); break; case System.Windows.Forms.DialogResult.No: strArgs = new string[allObjs.Count]; allObjs.CopyTo(strArgs, 0); break; default: return; } LogWrite("Операция начата пользователем"); StartProcedure(strArgs); } } catch (Exception ex) { CFI = null; LogWrite(ex.Message); } }
void StartProcedure(string[] strArgs) { GetPathsToCopy(strArgs); Text = "Очистка старых файлов..."; LogWrite(Text); ToWorkingMode(true); CFI = new CFileIndexer(txtFolderUpdate.Text, this); CFI.CopyFilesInOtherThread(strArgs); }