Winform ProgressBar 控制元件載入,backgroundWorker事件處理資料
阿新 • • 發佈:2020-10-14
DialogResult result = MessageBox.Show($"當前失敗資料共計{failCount}條,是否上傳?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { // 後臺執行緒查詢資料 toolStripProgressBar1.Value = 0; this.backgroundWorker1.RunWorkerAsync(dataTable); //可以禁用其他控制元件防止出現後臺處理資料,出現異常}
backgroundWorker事件:
#region [backgroundWorker1事件] private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { if (e.Argument is DataTable scoreUploadTable) { ScoreUpload scoreUpload = new ScoreUpload();int index = 1; int count = scoreUploadTable.Rows.Count; //獲得表資料數量 foreach (DataRow rowsTable in scoreUploadTable.Rows) { scoreUpload = GetRowsInfo(rowsTable); //獲得物件資料 examinterface.QryXml(GetQuerySQL(SqlStatusEnum.UPLOAD, scoreUpload)); //上傳到資料庫 backgroundWorker1.ReportProgress(index* 100 / count); if (backgroundWorker1.CancellationPending) { e.Cancel = true; return; } index++; } } } private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { this.toolStripProgressBar1.Value = e.ProgressPercentage; } private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { this.toolStripProgressBar1.Value = 100; MessageBox.Show("成績失敗資料上傳完成"); RefreshBindTable(SqlStatusEnum.FUZZY_QUERY); } #endregion
private ScoreUpload GetRowsInfo(DataRow rows) { ScoreUpload scoreUpload = new ScoreUpload { Lsh = rows["S_LSH"].ToString(), // 學員編號 StudentName = rows["S_XM"].ToString(), // 學員姓名 IdCardNumber = rows["S_ZJHM"].ToString(), // 證件號碼 Numbers = rows["S_DJC"].ToString(), // 考試次數 ExamDate = rows["S_KSRQ"].ToString(), // 考試日期 ExamDateTime = Convert.ToDateTime(rows["D_KSSJ"]), // 考試時間 ExamType = rows["S_KSLX"].ToString() // 考試型別 }; return scoreUpload; }