// 上傳 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; } }