RealtimeAnalysis.FormRealtimeDiagram.buttonScheduleEDF_Click C# (CSharp) Method

buttonScheduleEDF_Click() private method

private buttonScheduleEDF_Click ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
return void
        private void buttonScheduleEDF_Click(object sender, EventArgs e)
        {
            DataTable dt = (DataTable)dataGridViewTasks.DataSource;
            List<PeriodicTask> taskSet = new List<PeriodicTask>();
            foreach (DataRow dr in dt.Rows)
                taskSet.Add(new PeriodicTask(dr));

            long LCM = GetLCM_forWorkload(dt);

            List<double> listHardDeadline = new List<double>();
            foreach (PeriodicTask task in taskSet)
            {
                listHardDeadline.AddRange(task.GetHardDeadline(0, LCM));
            }
            listHardDeadline.Sort();

            List<List<double>> listListSoftDeadline = new List<List<double>>();
            foreach (PeriodicTask task in taskSet)
            {
                listListSoftDeadline.Add(task.GetSoftDeadline(0, LCM));
            }

            bool bHard = true;
            foreach (double deadline in listHardDeadline)
            {
                if (false == TimeDemandAnalysis(dt, 0, deadline))
                {
                    Console.WriteLine("[Hard] Not schedulable at " + deadline);
                    bHard = false;
                }
            }

            if (bHard == true)
                Console.WriteLine("[Hard] Schedulable.");

            bool bSoft = true;
            for(int i = 0; i<listListSoftDeadline.Count; i++)
            {
                List<double> listSoftDeadline = listListSoftDeadline[i];
                foreach (double deadline in listSoftDeadline)
                {
                    if (false == TimeDemandAnalysis(dt, 0, deadline))
                    {
                        taskSet[i].MissCount++;
                        Console.WriteLine("[Task" + i + "] [Soft] Not schedulable at " + deadline);
                        bSoft = false;
                    }
                    else
                    {
                        taskSet[i].SuccessCount++;
                    }
                }
                int total = taskSet[i].MissCount + taskSet[i].SuccessCount;
                Console.WriteLine("[Task" + i + "] " + taskSet[i].SuccessCount + "/" + total);
            }

            if (bSoft == true)
                Console.WriteLine("[Soft] Schedulable.");
        }