Exemple #1
0
        // 上傳
        void _upload_DoWork(object sender, DoWorkEventArgs e)
        {
            // 傳送與回傳筆數
            int SendCount = 0, RspCount = 0;

            // 刪除舊資料
            SendCount = _deleteScoreList.Count;

            // 取得 del id
            List <string> delIDList = _deleteScoreList.Select(x => x.ID).ToList();

            // 執行
            try
            {
                SHSCETake.Delete(_deleteScoreList);
            }
            catch (Exception ex)
            {
                e.Result = ex.Message;
                e.Cancel = true;
            }
            //    RspCount = JHSCETake.SelectByIDs(delIDList).Count;

            //// 刪除未完成
            //    if (RspCount > 0)
            //        e.Cancel = true;

            try
            {
                #region 新增資料,分筆上傳

                Dictionary <int, List <SHSCETakeRecord> > batchDict = new Dictionary <int, List <SHSCETakeRecord> >();
                int bn = 150;
                int n1 = (int)(_addScoreList.Count / bn);

                if ((_addScoreList.Count % bn) != 0)
                {
                    n1++;
                }

                for (int i = 0; i <= n1; i++)
                {
                    batchDict.Add(i, new List <SHSCETakeRecord>());
                }


                if (_addScoreList.Count > 0)
                {
                    int idx = 0, count = 1;
                    // 分批
                    foreach (SHSCETakeRecord rec in _addScoreList)
                    {
                        // 100 分一批
                        if ((count % bn) == 0)
                        {
                            idx++;
                        }

                        batchDict[idx].Add(rec);
                        count++;
                    }
                }


                // 上傳資料
                foreach (KeyValuePair <int, List <SHSCETakeRecord> > data in batchDict)
                {
                    SendCount = 0; RspCount = 0;
                    if (data.Value.Count > 0)
                    {
                        SendCount = data.Value.Count;
                        try
                        {
                            SHSCETake.Insert(data.Value);
                        }
                        catch (Exception ex)
                        {
                            e.Cancel = true;
                            e.Result = ex.Message;
                        }

                        counter += SendCount;
                    }
                }

                SetLog();

                e.Result = _addScoreList.Count;



                #endregion
            }
            catch (Exception ex)
            {
                e.Result = ex.Message;
                e.Cancel = true;
            }
        }