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(); } //остановка таймера ожидание, если очередь пуста }