C#中backgroundworker的使用教程

2019-12-30 19:20:33于丽

RunWorkerCompleted事件:当DoWork事件处理完成之后,将会触发该事件。


private void backgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) 
{ 
 //e.Cancelled指示异步操作是否已被取消 
 //e.Error 指示异步操作期间发生的错误 
 //e.Result 获取异步操作结果的值,即DoWork事件中,Result设置的值。 
 if (e.Cancelled == true) 
 { 
  resultLabel.Text = "Canceled!"; 
 } 
 else if (e.Error != null) 
 { 
  resultLabel.Text = "Error: " + e.Error.Message; 
 } 
 else 
 { 
  resultLabel.Text = e.Result.ToString(); 
 } 
}

ProgressChanged事件:ProgressChanged事件处理程序的第二个参数e有一个ProgressPercentage属性,它就由 ReportProgress的第一个参数percentProgress来提供。这个参数一般用来报告该后台操作完成的进度,然后用ProgressChanged的第二个参数e的ProgressPercentage属性来获取该进度信息。如果用户还想传递更多的信息,可以使用ReportProgress的第二种重载,它的第二个参数userState将会传递给ProgressChanged事件的参数e的UserState属性。


private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) 
{ 
 //e.ProgressPercentage 获取异步操作进度的百分比 
 resultLabel.Text = (e.ProgressPercentage.ToString() + "%"); 
 string state = (string)e.UserState;//接收ReportProgress方法传递过来的userState 
}

4、按钮事件


 //开始按钮 
private void btnStart_Click(object sender, EventArgs e) 
{ 
 if (backgroundWorker1.IsBusy != true)//判断BackgroundWorker 是否正在运行异步操作。 
 { 
  // Start the asynchronous operation. 
  backgroundWorker1.RunWorkerAsync("object argument");//启动异步操作,有两种重载。将触发BackgroundWorker.DoWork事件 
 } 
} 
 //终止 
private void btnEnd_Click(object sender, EventArgs e) 
{ 
 if (backgroundWorker1.WorkerSupportsCancellation == true) 
 { 
  // Cancel the asynchronous operation. 
  backgroundWorker1.CancelAsync(); //请求取消挂起的后台操作。调用该方法将使BackgroundWorker.CancellationPending属性设置为True。 
 } 
} 

总结

以上所述是小编给大家介绍的C#中backgroundworker的使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ASPKU网站的支持!


注:相关教程知识阅读请移步到c#教程频道。