1. 程式人生 > 實用技巧 >Winform ProgressBar 控制元件載入,backgroundWorker事件處理資料

Winform ProgressBar 控制元件載入,backgroundWorker事件處理資料

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