public RetakeListBySubject()
        {
            RetakeSelectSemesterForm form = new RetakeSelectSemesterForm("重修名單-依科目");

            if (form.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            List <List <BriefStudentData> > splitList = new List <List <BriefStudentData> >();
            Dictionary <List <BriefStudentData>, ManualResetEvent> handle   = new Dictionary <List <BriefStudentData>, ManualResetEvent>();
            Dictionary <List <BriefStudentData>, DSResponse>       response = new Dictionary <List <BriefStudentData>, DSResponse>();

            //把全部在校生以_PackageSize人分一包
            #region 把全部在校生以_PackageSize人分一包
            int count = 0;
            List <BriefStudentData> package = new List <BriefStudentData>();
            foreach (BriefStudentData student in SmartSchool.StudentRelated.Student.Instance.Items)
            {
                if (student.IsNormal)
                {
                    if (count == 0)
                    {
                        count   = _PackageSize;
                        package = new List <BriefStudentData>(_PackageSize);
                        splitList.Add(package);
                    }
                    package.Add(student);
                    count--;
                }
            }
            #endregion
            //每一包一個ManualResetEvent一個DSResponse
            #region 每一包一個ManualResetEvent(預設為不可通過)一個DSResponse
            foreach (List <BriefStudentData> p in splitList)
            {
                handle.Add(p, new ManualResetEvent(false));
                response.Add(p, new DSResponse());
            }
            #endregion
            //在背景執行取得資料
            BackgroundWorker bkwDataLoader = new BackgroundWorker();
            bkwDataLoader.DoWork += new DoWorkEventHandler(bkwDataLoader_DoWork);
            bkwDataLoader.RunWorkerAsync(new object[] { handle, response });
            //在背景計算不及格名單
            BackgroundWorker bkwNotPassComputer = new BackgroundWorker();
            bkwNotPassComputer.WorkerReportsProgress = true;
            bkwNotPassComputer.DoWork             += new DoWorkEventHandler(bkwNotPassComputer_DoWork);
            bkwNotPassComputer.ProgressChanged    += new ProgressChangedEventHandler(bkwNotPassComputer_ProgressChanged);
            bkwNotPassComputer.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bkwNotPassComputer_RunWorkerCompleted);
            bkwNotPassComputer.RunWorkerAsync(new object[] { handle, response, form.SchoolYear, form.Semester, form.IsPrintAllSemester });
        }
Example #2
0
        public RetakeScoreImport()
        {
            RetakeSelectSemesterForm form = new RetakeSelectSemesterForm("重修成績匯入表");

            if (form.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }

            _BWRepeatScoreImport.DoWork               += new DoWorkEventHandler(_BWRepeatScoreImport_DoWork);
            _BWRepeatScoreImport.RunWorkerCompleted   += new RunWorkerCompletedEventHandler(_BWRepeatScoreImport_RunWorkerCompleted);
            _BWRepeatScoreImport.ProgressChanged      += new ProgressChangedEventHandler(_BWRepeatScoreImport_ProgressChanged);
            _BWRepeatScoreImport.WorkerReportsProgress = true;
            _BWRepeatScoreImport.RunWorkerAsync(new object[] { form.SchoolYear, form.Semester, form.IsPrintAllSemester });
        }