MakeClassSchedule.Algorithm.Schedule.MakeCopy C# (CSharp) Method

MakeCopy() public method

public MakeCopy ( bool setupOnly ) : Schedule
setupOnly bool
return Schedule
        public Schedule MakeCopy(bool setupOnly)
        {
            // make object by calling copy constructor and return smart pointer to new object
            return new Schedule(this, setupOnly);
        }

Usage Example

        public void SetSchedule(Schedule schedule, bool showGraphical)
        {
            _schedule = schedule.MakeCopy(false);
            if (Monitor.TryEnter(Locker, 500))
            {
                //_resultWindow.Controls["lblFitness"].Text = schedule.GetFitness().ToString();
                SetText("Fitness: " + schedule.GetFitness().ToString());
                Monitor.Exit(Locker);
            }
            else return;
            if (showGraphical)
            {
                //
                // ReSet to New DataGridView
                //
                foreach (KeyValuePair<int, DataGridView> it in dgvList)
                {
                    ClearDataGridView(it.Value);
                }
                //
                int numberOfRooms = Configuration.GetInstance.GetNumberOfRooms();
                int daySize = schedule.day_Hours * numberOfRooms;
                Random rand = new Random();
                foreach (KeyValuePair<CourseClass, int> it in schedule.GetClasses().ToList())
                {
                    // coordinate of time-space slot
                    int pos = it.Value; // int pos of _slot array
                    int day = pos / daySize;
                    int time = pos % daySize; // this is not time now!
                    int room = time / schedule.day_Hours;
                    time = time % schedule.day_Hours;  // this is a time now!

                    int dur = it.Key.GetDuration;

                    CourseClass cc = it.Key;
                    Room r = Configuration.GetInstance.GetRoomById(room);
                    string groups_Name = "";
                    foreach (var gs in cc.GetGroups)
                    {
                        groups_Name += gs.GetName + "\r\n";
                    }
                    groups_Name = groups_Name.Trim();

                    ((DataGridViewTextBoxCellEx)dgvList[r.GetId][day + 1, time]).RowSpan = cc.GetDuration;
                    dgvList[r.GetId][day + 1, time].Style.BackColor =
                                Color.FromArgb(rand.Next(70, 250), rand.Next(70, 250), rand.Next(70, 250));

                    dgvList[r.GetId][day + 1, time].Value = string.Format(CultureInfo.CurrentCulture,
                        "{0}\r\n{1}\r\n{2}\r\n{3}", cc.GetCourse.GetName, cc.GetProfessor.GetName, groups_Name, cc.Lab);

                        //(cc.GetCourse.GetName + Environment.NewLine +
                        // cc.GetProfessor.GetName + Environment.NewLine +
                        // groups_Name + Environment.NewLine + cc.Lab);
                }
            }
        }