BackgroundWorker简介

   BackgroundWorker在winfrom中有对应控件,该有三个事件:DoWork 、ProgressChanged 和 RunWorkerCompleted。

在程序中调用RunWorkerAsync方法则会启动DoWork事件的事件处理,当在事件处理过程中,调用 ReportProgress方法则会启动ProgressChanged事件的事件处理,而当DoWork事件处理完成时,则会触发RunWorkerCompleted事件。您必须非常小心,确保在 DoWork 事件处理程序中不操作任何用户界面对象(否则仍会停止响应)。而应该通过 ProgressChanged和 RunWorkerCompleted 事件与用户界面进行通信。

实现waitefrom界面的窗体,改界面自己设计。

 1 /// <summary>
 2         /// 当辅助线程指示某些操作已经进行时引发
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
 7         {
 8             int progress = e.ProgressPercentage;
 9             this.progressBar1.Value = progress;
10             //label1.Content = string.Format("{0}", progress);
11         }
12 
13         /// <summary>
14         /// 操作开始时在另一个线程上运行的事件处理程序
15         /// </summary>
16         /// <param name="sender"></param>
17         /// <param name="e"></param>
18         private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
19         {
20             
21         }
22 
23         /// <summary>
24         /// 当辅助线程完成(无论是成功,失败或者取消)时引发
25         /// </summary>
26         /// <param name="sender"></param>
27         /// <param name="e"></param>
28         private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
29         {
30             this.DialogResult = DialogResult.OK;
31         }
View Code

相关文章: