private void mnuEditClearLog_Click(object sender, EventArgs e) { if (grdMain.CurrentRow == null) { return; } int RecID = (int)grdMain.CurrentRow.Cells["ID"].Value; //проверка, не заблокирована ли запись if (LockedRecIDs.Contains(RecID)) { CommonFunctions.InfoMessage("Запись заблокирована, так как данное задание выполняется", "Запись заблокирована"); return; } DialogResult Ask = MessageBox.Show("Очистить протокол?", "Очистка протокола", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (Ask == DialogResult.No) { return; } cTask tmptsk = new cTask(cConfig.dsConfig, "Tasks", RecID); tmptsk.ClearLog(); tmptsk.ToDataSet(cConfig.dsConfig, "Tasks"); cConfig.SaveConfig(); Worker.ClearTaskLog(RecID); }
public bool RunningInCurrentPeriod(cTask tsk) { string date = GetDate(tsk.GetNextDateTime()); if (CurrentDate == date) { return(true); } return(false); }
private void mnuEditEdit_Click(object sender, EventArgs e) { if (grdMain.CurrentRow == null) { return; } //Подготовка данных для редактирования int RecID = (int)grdMain.CurrentRow.Cells["ID"].Value; cTask Task = null; //проверка, не заблокирована ли запись if (LockedRecIDs.Contains(RecID)) { CommonFunctions.InfoMessage("Запись заблокирована, так как данное задание выполняется", "Запись заблокирована"); return; } try { Task = new cTask(cConfig.dsConfig, "Tasks", RecID); } catch (Exception ex) { CommonFunctions.ErrMessage(ex.Message); statlblMessages.ForeColor = Color.Red; statlblMessages.Text = "ОШИБКА: " + ex.Message; return; } //форма редактирования frmAddTask fAddTask = new frmAddTask(); fAddTask.fMain = this; fAddTask.Task = Task; fAddTask.bEdit = true; fAddTask.ShowDialog(); OnLockRecord = null; OnUnlockRecord = null; if (fAddTask.bSuccess) { FindRows = null; //обнуление поиска //отредактированное задание должно быть в очереди на выполнение if (Worker.RunningInCurrentPeriod(RecID)) { Worker.RemoveTask(RecID, false); //удаляем WorkerErrorLevel wol = Worker.AddTask(RecID); //перезапускаем showworkererror(wol, "Задача сохранена и запущена на выполнение."); } } }
private bool OverdueRecord(DateTime curDateTime, int recID) { cTask tmpTsk = null; try { tmpTsk = new cTask(cConfig.dsConfig, "Tasks", recID); } catch { return(false); } return(tmpTsk.TaskOverdue(curDateTime)); }
private void mnuEditViewLog_Click(object sender, EventArgs e) { if (grdMain.CurrentRow == null) { return; } int RecID = (int)grdMain.CurrentRow.Cells["ID"].Value; cTask tmptsk = new cTask(cConfig.dsConfig, "Tasks", RecID); frmLogView fLogView = new frmLogView(); fLogView.NoClear = LockedRecIDs.Contains(RecID); fLogView.log = tmptsk.Log; fLogView.ShowDialog(); if (fLogView.bClear) { tmptsk.ClearLog(); tmptsk.ToDataSet(cConfig.dsConfig, "Tasks"); cConfig.SaveConfig(); } }
public WorkerErrorLevel CorrectOverdueTime(DateTime startDT) { cTask tmpTsk = null; foreach (int otID in OverdueTaskIDs) { try { tmpTsk = new cTask(cConfig.dsConfig, "Tasks", otID); } catch (Exception ex) { TaskErrMessage = ex.Message; return(WorkerErrorLevel.Error); } tmpTsk.CorrectOverdueTime(startDT, true); tmpTsk.ToDataSet(cConfig.dsConfig, "Tasks"); tmpTsk = null; } return(WorkerErrorLevel.OK); }
public bool RunningInCurrentPeriod(int tskID) { cTask tmpTsk = null; try { tmpTsk = new cTask(cConfig.dsConfig, "Tasks", tskID); } catch (Exception ex) { TaskErrMessage = ex.Message; return(false); } string date = GetDate(tmpTsk.GetNextDateTime()); if (CurrentDate == date) { return(true); } return(false); }
public WorkerErrorLevel RunOverdueTasks() { cTask tmpTsk = null; foreach (int otID in OverdueTaskIDs) { try { tmpTsk = new cTask(cConfig.dsConfig, "Tasks", otID); } catch (Exception ex) { TaskErrMessage = ex.Message; return(WorkerErrorLevel.Error); } tmpTsk.onSendMessage += cTaskWorker_onSendMessage; tmpTsk.NoRemind = true; tmpTsk.RunTask(); tmpTsk.onSendMessage -= cTaskWorker_onSendMessage; tmpTsk = null; } return(WorkerErrorLevel.OK); }
void Worker_OnStartRunTask(cTask task) { LockUnlock(true, task.ID); }
void Worker_OnStopTask(cTask task) { LockUnlock(false, task.ID); }
void Worker_OnCompleteTask(cTask task) { LockUnlock(false, task.ID); }
void cTaskWorker_onSendMessage(object sender, bool NoAddTime) { cTask tsk = (cTask)sender; switch (tsk.TaskSoundType) { case SoundType.Internal: { SoundPlayer sp = new SoundPlayer(Properties.Resources.alarm); sp.Load(); sp.Play(); }; break; case SoundType.User: { try { SoundPlayer sp = new SoundPlayer(tsk.SoundPath); sp.Load(); sp.Play(); } catch { SystemSounds.Hand.Play(); } }; break; } //показываем всплывающую подсказку if ((WorkerNotification == NotificationType.Baloon) || (WorkerNotification == NotificationType.Both)) { fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate { CommonFunctions.globalNI.ShowBalloonTip(5000, tsk.TaskName, tsk.MessageText + " ", System.Windows.Forms.ToolTipIcon.Info); }); } //показываем окно с оповещением if ((WorkerNotification == NotificationType.Window) || (WorkerNotification == NotificationType.Both)) { if (tsk.Overdue) { fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate { CommonFunctions.InfoMessage(tsk.MessageText, tsk.TaskName + ": " + tsk.LastRun); }); return; } if (MessageForms[tsk.ID] == null) //формы сообщения нет { fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate { MessageForms[tsk.ID] = new frmMessage(); MessageForms[tsk.ID].Task = tsk; MessageForms[tsk.ID].NoAddTime = NoAddTime; MessageForms[tsk.ID].TopMost = true; //поверх всех окон MessageForms[tsk.ID].Show(); }); } else { //форма для этой задачи есть, сообщение выслано повторно (Remind) //а пользователь не реагирует fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate { MessageForms[tsk.ID].TopMost = true; //Форма поверх всех окон, в форме это отключается. MessageForms[tsk.ID].Task = tsk; MessageForms[tsk.ID].Show(); }); } } }
private void btnOK_Click(object sender, EventArgs e) { if ((TaskActionType == ActionType.Message) || (TaskActionType == ActionType.Both)) { if (txtMessage.Text.Trim() == string.Empty) { DialogResult Ans = MessageBox.Show("Сообщение пустое. Продолжить?", "Пустое сообщение", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (Ans == DialogResult.No) { return; } } } if (bEdit) { if (dtStartDateTime.Value != Task.GetStartDateTime()) { if ((TaskTimeType != TimeType.One) && (TaskTimeType != TimeType.EveryDay) && (TaskTimeType != TimeType.EveryNDays)) { DialogResult Ans = MessageBox.Show("Дата (время) были изменены." + "При сохранении изменится дата (время) первого и следующих запусков. " + "Изменить дату (время)?", "Изменение даты", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (Ans == DialogResult.No) { dtStartDateTime.Value = Task.GetStartDateTime(); return; } } Task.StartDateTime = cTask.DateTimeToString(dtStartDateTime.Value); Task.ResetNextTime(); Task.ClearLastRun(); } } else { try { Task = new cTask(txtName.Text.Trim(), dtStartDateTime.Value, false); } catch (Exception ex) { lblFormMsg.ForeColor = Color.Red; lblFormMsg.Text = ex.Message; return; } } //установка свойств объекта Task.Active = chkActive.Checked; Task.MessageText = txtMessage.Text.Trim(); Task.N = Convert.ToInt32(txtN.Text); Task.ProgramParameters = txtProgramParams.Text.Trim(); Task.ProgramPath = txtProgramPath.Text.Trim(); Task.ProgramHide = chkProgramHide.Checked; Task.Remind = Convert.ToInt32(txtRemind.Text); Task.SoundPath = SoundFile; Task.TaskActionType = TaskActionType; Task.TaskName = txtName.Text.Trim(); Task.TaskRemindType = TaskRemindType; Task.TaskSoundType = TaskSoundType; Task.TaskTimeType = TaskTimeType; //внутренняя проверка объекта try { Task.CheckTask(); } catch (Exception ex) { lblFormMsg.ForeColor = Color.Red; lblFormMsg.Text = ex.Message; return; } //Запись в БД try { Task.ToDataSet(cConfig.dsConfig, "Tasks"); } catch (Exception ex) { lblFormMsg.ForeColor = Color.Red; lblFormMsg.Text = ex.Message; return; } //сохранение if (!cConfig.SaveConfig()) { lblFormMsg.ForeColor = Color.Red; lblFormMsg.Text = cConfig.ConfigErrMessage; return; } bSuccess = true; this.Close(); }