C#并发编程-异步编程基础-报告进度
[C#] C#并发编程-异步编程基础-报告进度
时间:2017-03-06 14:37:56 阅读:374 评论:0 收藏:0
1 int ProgressRate = 0; 2 3 private async void btnProgress_Click(object sender, EventArgs e) 4 { 5 ProgressRate = 0; 6 7 var progress = new Progress<int>(); 8 9 //progress的进度改变 10 progress.ProgressChanged += (obj1, obj2) => 11 { 12 if (ProgressRate <= 100) 13 { 14 this.lblProgress.Content = ProgressRate.ToString() + "%"; 15 this.pbProgress.Value = ProgressRate; 16 } 17 else 18 { 19 this.btnProgress.IsEnabled = true; 20 } 21 22 }; 23 24 this.btnProgress.IsEnabled = false; 25 await ReportProgressAsync(progress); 26 } 27 28 //在此报告progress的进度,更改ProgressRate的值 29 private async Task ReportProgressAsync(IProgress<int> progress = null) 30 { 31 while (ProgressRate <= 100) 32 { 33 if (progress != null) 34 { 35 await Task.Delay(TimeSpan.FromMilliseconds(100)); 36 progress.Report(ProgressRate++); 37 } 38 } 39 }
结果: