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 }); }
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 }); }