Exemple #1
0
        private void CourseWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MsgBox.Show(e.Error.Message);
                return;
            }
            else if (!errorProvider.HasError &&
                     ("" + RunningSchoolYear != cboSchoolYear.Text || "" + RunningSemester != cboSemester.Text))
            {
                RunningSchoolYear = int.Parse(cboSchoolYear.Text);
                RunningSemester   = int.Parse(cboSemester.Text);

                CourseWorker.RunWorkerAsync();
            }
            else
            {
                List <string> subjects = Courses.GetSubjects();

                cboSource.Items.Clear();
                cboSource.Items.AddRange(subjects.ToArray());
                chTargetSubjects.Items.Clear();
                chTargetSubjects.Items.AddRange(subjects.ToArray());

                ControlEnabled = true;

                cboExam.Focus();
                dgvTargets.ClearSelection();

                FISCA.Presentation.MotherForm.SetStatusBarMessage("");
            }
        }
Exemple #2
0
        private void cboSchoolYearSemester_TextChanged(object sender, EventArgs e)
        {
            ValidateSemester();

            if (!errorProvider.HasError)
            {
                if (!CourseWorker.IsBusy)
                {
                    ControlEnabled    = false;
                    RunningSchoolYear = int.Parse(cboSchoolYear.Text);
                    RunningSemester   = int.Parse(cboSemester.Text);
                    CourseWorker.RunWorkerAsync();
                }
            }
        }
Exemple #3
0
        private void CourseWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            CourseWorker.ReportProgress(0, "讀取學生資料...");
            Event.WaitOne();
            CourseWorker.ReportProgress(100, "讀取學生資料...");

            List <string> studentIDs = Students.AsKeyList();
            FunctionSpliter <string, JHSCAttendRecord> spliter = new FunctionSpliter <string, JHSCAttendRecord>(100, Util.MaxThread);

            spliter.Function = delegate(List <string> part)
            {
                return(JHSCAttend.Select(part, null, null, "" + RunningSchoolYear, "" + RunningSemester));
            };
            spliter.ProgressChange = delegate(int progress)
            {
                CourseWorker.ReportProgress(Util.CalculatePercentage(studentIDs.Count, progress), "讀取修課記錄...");
            };
            List <JHSCAttendRecord> AllAttends = spliter.Execute(studentIDs);

            AttendManager.Instance.Set(Students, AllAttends);

            List <string> validCourseIDs = new List <string>();

            foreach (JHSCAttendRecord sca in AllAttends)
            {
                if (!validCourseIDs.Contains(sca.RefCourseID))
                {
                    validCourseIDs.Add(sca.RefCourseID);
                }
            }

            //CourseWorker.ReportProgress(0, "讀取課程...");

            JHCourse.RemoveAll();

            FunctionSpliter <string, JHCourseRecord> spliter2 = new FunctionSpliter <string, JHCourseRecord>(100, Util.MaxThread);

            spliter2.Function = delegate(List <string> part)
            {
                return(JHCourse.SelectByIDs(part));
            };
            spliter2.ProgressChange = delegate(int progress)
            {
                CourseWorker.ReportProgress(Util.CalculatePercentage(validCourseIDs.Count, progress), "讀取課程...");
            };
            Courses = spliter2.Execute(validCourseIDs);
        }