private void CancelBtn_Click(object sender, EventArgs e) { isCancelled = true; Debug.WriteLine("CANCEL BUTTON WAS CLICKED!!!"); BackgroundWorkerSchedules.CancelAsync(); Debug.WriteLine("isFirstCalculation: " + RefToCourseSelectForm.getIsFirstCalculationState()); if (RefToCourseSelectForm.getIsFirstCalculationState() == false) { RefToResultLoadForm.Show(); RefToResultLoadForm.setIsOptimizedState(false); RefToResultLoadForm.ChangeOptimizationText(); } else { RefToCourseSelectForm.Show(); } acceptableSchedulesTemp.Clear(); overlapSchedulesTemp.Clear(); acceptableSchedules.Clear(); overlapSchedules.Clear(); resultSchedules.Clear(); this.Hide(); }
//[FUNCTION - BeginWorking()] //Used from other classes as a way to start the evaluation/worker public void BeginWorking(bool isOptimized) { isCancelled = false; this.isOptimization = isOptimized; numComplete = 0; ModifyProgressBarColor.SetState(ProgressBarSchedules, 2); BackgroundWorkerSchedules.RunWorkerAsync(); }
//[FUNCTION - NestedForLoop] //Allows for dynamic creation off all schedule possibilities private void NestedScheduleConfig(int secID, int secAmount, int[] secConfig) { int secIdNext = secID + 1; int[] currentSecConfig = new int[courseAmount]; secConfig.CopyTo(currentSecConfig, 0); if (BackgroundWorkerSchedules.CancellationPending == true) { Debug.WriteLine("Work was HALTED!"); return; } for (int i = 0; i < secAmount; i++) { currentSecConfig[secID] = i; if ((secIdNext) == courseAmount) { schedulePopulation.Add(new SingleSchedule(courseAmount, creditAmount, random, templateWeek, GetUniqueSec(currentSecConfig))); if (numComplete % 1000 == 0) { //Debug.WriteLine("1k Schedules were added to schedule"); //Debug.WriteLine("(" + (float)numComplete + " / " + (float)scheduleAmount + ") * " + 100f + " = " + ((float)numComplete / (float)scheduleAmount) * 100f); percentComplete = ((float)numComplete / (float)scheduleAmount) * 100f; BackgroundWorkerSchedules.ReportProgress((int)percentComplete <= 100 ? (int)percentComplete : 100); } if (numComplete % 20000 == 0) { HandleScheduleOverload(); } numComplete += 1; } else { NestedScheduleConfig((secIdNext), sectionAmountAll[secIdNext], currentSecConfig); } } }