void mWorker_PackageWorker(object sender, PackageWorkEventArgs <StudentRecord> e)
        {
            List <string> list = new List <string>();

            foreach (StudentRecord var in e.List)
            {
                list.Add(var.StudentID);
            }
            Dictionary <string, SmartSchool.Feature.Student.StudentSnapShop> sv = new Dictionary <string, SmartSchool.Feature.Student.StudentSnapShop>();

            foreach (SmartSchool.Feature.Student.StudentSnapShop s in SmartSchool.Feature.Student.StudentSnapShop.GetSnapShop(list.ToArray()))
            {
                if (!sv.ContainsKey(s.RefStudentID))
                {
                    sv.Add(s.RefStudentID, s);
                }
                else
                {
                    if (sv[s.RefStudentID].Version < s.Version)
                    {
                        sv[s.RefStudentID] = s;
                    }
                }
            }
            List <SmartSchool.Feature.Student.StudentSnapShop> slist = new List <SmartSchool.Feature.Student.StudentSnapShop>();

            slist.AddRange(sv.Values);
            e.Result = slist;
        }
        void multiThreadWorker_PackageWorker(object sender, PackageWorkEventArgs <StudentRecord> e)
        {
            int          schoolyear = (int)((object[])e.Argument)[0];
            int          semester   = (int)((object[])e.Argument)[1];
            AccessHelper helper     = (AccessHelper)((object[])e.Argument)[2];

            helper.StudentHelper.FillAttendCourse(schoolyear, semester, e.List);
        }
Esempio n. 3
0
            /// <summary>
            /// 執行
            /// </summary>
            /// <param name="list">要處理的資料</param>
            /// <param name="argument">額外的參數</param>
            public List <PackageWorkEventArgs <T> > Run(IEnumerable <T> list, object argument)
            {
                #region 切封包執行
                List <PackageWorkEventArgs <T> >[] packages = new List <PackageWorkEventArgs <T> > [_MaxThreads];
                for (int i = 0; i < packages.Length; i++)
                {
                    packages[i] = new List <PackageWorkEventArgs <T> >();
                }
                List <T> package      = null;
                int      packagecount = 0;
                int      p            = 0;
                foreach (T var in list)
                {
                    if (packagecount == 0)
                    {
                        package      = new List <T>(_PackageSize);
                        packagecount = _PackageSize;
                        PackageWorkEventArgs <T> pw = new PackageWorkEventArgs <T>();
                        pw.List     = package;
                        pw.Argument = argument;
                        packages[p % _MaxThreads].Add(pw);
                        p++;
                    }
                    package.Add(var);
                    packagecount--;
                }
                #region 開多個執行緒跑
                List <Thread> otherThreads = new List <Thread>();
                for (int i = 1; i < _MaxThreads; i++)
                {
                    if (packages[i].Count > 0)
                    {
                        Thread backThread = new Thread(new ParameterizedThreadStart(doWork));
                        backThread.IsBackground = true;
                        backThread.Start(packages[i]);
                        otherThreads.Add(backThread);
                    }
                }
                if (packages[0].Count > 0)
                {
                    doWork(packages[0]);
                }
                foreach (Thread thread in otherThreads)
                {
                    thread.Join();
                }
                #endregion
                List <PackageWorkEventArgs <T> > result = new List <PackageWorkEventArgs <T> >();
                foreach (List <PackageWorkEventArgs <T> > var in packages)
                {
                    result.AddRange(var);
                }
                return(result);

                #endregion
            }
Esempio n. 4
0
        void multiThreadUpdater_PackageWorker(object sender, PackageWorkEventArgs <DSRequest> e)
        {
            DSXmlHelper helper = new DSXmlHelper("UpdateStudentList");

            foreach (DSRequest request in e.List)
            {
                foreach (XmlElement ele in request.GetContent().GetElements("Student"))
                {
                    helper.AddElement(".", ele);
                }
            }
            SmartSchool.Feature.EditStudent.Update(new DSRequest(helper));
        }
Esempio n. 5
0
        private void Worker_PackageWorker(object sender, PackageWorkEventArgs <IN> e)
        {
            if (Function == null)
            {
                throw new ArgumentException("請指定 RunPart 屬性。");
            }

            List <OUT> result = Function(e.List);

            lock (Result)
            {
                progress += e.List.Count;
                Result.AddRange(result);
            }

            if (ProgressChange != null)
            {
                ProgressChange(progress);
            }
        }
 void mWorker_PackageWorker(object sender, PackageWorkEventArgs <SmartSchool.Feature.Student.StudentSnapShop> e)
 {
     SmartSchool.Feature.Student.StudentSnapShop.AddSnapShop(e.List.ToArray());
 }
Esempio n. 7
0
 void courseLoader_PackageWorker(object sender, PackageWorkEventArgs<StudentRecord> e)
 {
     accessHelper.StudentHelper.FillAttendCourse(SmartSchool.Customization.Data.SystemInformation.SchoolYear, SmartSchool.Customization.Data.SystemInformation.Semester, e.List);//抓當學年度學期
     List<CourseRecord> courseRecs = (List<CourseRecord>)e.Argument;
     //整理每個學生的修課至courseRecs
     foreach (StudentRecord studentRec in e.List)
     {
         foreach (StudentAttendCourseRecord attendRec in studentRec.AttendCourseList)
         {
             CourseRecord courseRec = accessHelper.CourseHelper.GetCourse("" + attendRec.CourseID)[0];
             lock (courseRec)
             {
                 if (!courseRecs.Contains(courseRec))
                     courseRecs.Add(courseRec);
             }
         }
     }
 }
Esempio n. 8
0
 void examLoader_PackageWorker(object sender, PackageWorkEventArgs<CourseRecord> e)
 {
     accessHelper.CourseHelper.FillExam(e.List);
 }