private void ExecutedTimer_Tick(object sender, EventArgs e) //тик таймера выполнения { if (StartExTimerFromWaitingQu == false) //проверка на запуск таймера из очереди ожидания { if (SavedExucutedProcess.StageNow != SavedExucutedProcess.StageCount) //проверка на полное выполнение процесса { WaitingProcess.Add(SavedExucutedProcess); //отравление в очередь ожидания if (WaitingProcess.Count == 1 && WaitingQuueTimer.Enabled == false) { WaitingQuueTimer.Start(); } //проверка на необходимость запуска таймера очереди ожидания RefreshWaitingQuueViewFunc(); //перерисовка очереди ожидания WriteToLog(SavedExucutedProcess, "Выполнена часть задачи"); //запись в лог } else { WriteToLog(SavedExucutedProcess, "Задача выполнена"); ExecutedProcess.Add(SavedExucutedProcess); } //полное выполнение процесса if (QueueProcess.Count != 0) //проверка очереди готовых { ToExecutedTask(); //передаем процесс на выполнение } else { ExecutedTimer.Stop(); ExecutedProcessId.Text = ""; ExecutedProcessName.Text = ""; ExecutedProcessTime.Text = ""; } //нечего не выполняется } else { ToExecutedTask(); //передаем процесс на выполнение StartExTimerFromWaitingQu = false; // } }
private void WaitingQuueTimer_Tick(object sender, EventArgs e) // таймер очереди ожидания { if (WaitingProcess.Count != 0) //процерка на наличие процессов в очереди ожидания { bool refr = false; //переменная указывающая на необходимость перирисовки for (int i = 0; i < WaitingProcess.Count; i++) { if (WaitingProcess[i].WaitingTime++ >= WaitingProcess[i].StageQuue[WaitingProcess[i].StageNow]) //проверка на время нахождения в очереди готовых { WaitingProcess[i].StageNow++; //меняем стейдж WaitingProcess[i].WaitingTime = 0; //обнуляем время ожидания QueueProcess.Add(WaitingProcess[i]); //отравление в очередь готовых WriteToLog(WaitingProcess[i], "Отправлен в очередь готовых из ожидания"); //запись в лог WaitingProcess.Remove(WaitingProcess[i]); //удаление из очереди ожидания if ((QueueProcess.Count == 1) && (ExecutedTimer.Enabled == false)) { StartExTimerFromWaitingQu = true; ExecutedTimer.Interval = 1; ExecutedTimer.Start(); } // проверка на наличие процессов в очереди готовности и запущен ли таймер выполнения refr = true; //включаем флаг на перерисовку } else { WaitingProcess[i].WaitingTime++;//инкримируем время ожидания процесса } } if (refr == true) //проверка на необходимость перерисовки { RefreshWaitingQuueViewFunc(); //перерисовка очереди ожидания RefreshReadyQuueViewFunc(); //перерисовка очереди исполнения } } else { WaitingQuueTimer.Stop(); } //остановка таймера ожидание, если очередь пуста }