C# Winform 进度条
BackgroundWorker可在后台执行任务,不影响主线程任务
Winform配置
向Winform内拖拽ProgressBar控件progressBar1
向Winform内拖拽BackgroundWorker组件backgroundWorker1
过程处理
向backgroundWorker1添加三个事件
private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; for (int i = 1; i <= 10; i++) { if (worker.CancellationPending) { e.Cancel = true; break; } else { // Perform a time consuming operation and report progress. System.Threading.Thread.Sleep(300); worker.ReportProgress(i * 10); } } } private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) { this.progressBar1.Value = e.ProgressPercentage; } private void backgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) { this.Visible = false; }
初始化backgroundWorker1配置
backgroundWorker1.WorkerReportsProgress = true; backgroundWorker1.WorkerSupportsCancellation = true;
执行、取消
if (!backgroundWorker1.IsBusy) { // Start the asynchronous operation. backgroundWorker1.RunWorkerAsync(); } if (backgroundWorker1.WorkerSupportsCancellation) { // Cancel the asynchronous operation. backgroundWorker1.CancelAsync(); }