private void MyBackupTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { if (this.TimerInUse) { return; } this.TimerInUse = true; for (int i = 0; i < MyBackup.MyBackups.Count; i++) { var backup = MyBackup.MyBackups[i]; if (backup.IsEnabled) { var Remaining = GetRemainingTime(backup, out long At); if (Remaining.TotalSeconds <= 0) { string FileName = backup.BackupName + "_" + backup.Database + "_" + DateTime.Now.ToString() + ".bak"; Vars.GiveEveryoneAccessControl(backup.BackupPath); FileName = Vars.RemoveInvalidFileNameChars(FileName); var path = Path.Combine(backup.BackupPath, FileName); var ConnectionString = SQLFunctions.GetConnectionString(backup.Host, backup.Database, backup.Authentication, backup.Username, backup.Password); var backupResult = SQLFunctions.BackupNow(path, ConnectionString); var backupState = new BackupState() { backup = backup, BackupDateTime = DateTime.Now.Ticks, DefaultBackupDateTime = At, FullPath = path, Warning = backupResult != null, }; if (backupResult != null) { backupState.WarningMessage = backupResult.Message; backupState.FullWarning = backupResult.ToString(); } MyBackup.SaveBackupState(backupState); backup.LastBackup = DateTime.Now.Ticks; MyBackup.SaveBackup(backup); } } if (this.MyTreeView.InvokeRequired) { this.MyTreeView.BeginInvoke((MethodInvoker) delegate() { this.RefreshMyTreeView(backup); }); } else { this.RefreshMyTreeView(backup); } } this.TimerInUse = false; }