关于异步线程BackgroundWorker类的使用心得

最近需要用到BackgroundWorker类来实现一个数据库访问,在服务器端生成文件,客户端文件下载的功能,为了使界面更友好,所以使用了BackgroundWorker类,下面是研究过程中的心得

关于异步线程
1、命名空间
   using System.ComponentModel;

2、声明
   BackgroundWorker bkgw_异步线程 = new BackgroundWorker();

3、属性
   //是否允许报告进度,通过ReportProgress触发事件
   bkgw_异步线程.WorkerReportsProgress = true;
   //是否允许异步取消,可以执行中通过CancellationPending属性来判断是否取消
   bkgw_异步线程.WorkerSupportsCancellation = true;
   //是否已请求取消线程,通过bkgw_异步线程.CancelAsync()方法触发
   bkgw_异步线程.CancellationPending
   //线程是否正在后台运行
   bkgw_异步线程.IsBusy
  

4、事件
   //线程开始事件,通过函数RunWorkerAsync触发
   bkgw_异步线程.DoWork
   参数DoWorkEventArgs e有几个重要属性
   e.Argument由函数RunWorkerAsync可传入一个object对像参数
   e.Cancel表示异步是否已取消,当bkgw_异步线程.CancellationPending为true时,能过e.Cancel=true取消线程
   e.Result,object类型,这个传会传入到RunWorkerCompleted事件中的e
   注意,在此事件中,不能操作任务主线程中的对像,例如主线程中的UI元素,否则会报线程安全异常

   //线程执行中事件,必须要将程WorkerReportsProgress 属性设置为true
   bkgw_异步线程.ProgressChanged
   参数ProgressChangedEventArgs e有几个重要属性
   e.ProgressPercentage表示进度,通过函数ReportProgress(1)可以传入表示进度的值,范围0-100
   注意,在此事件中,可以访问主线程UI中的元素对像,比如进度条、文本框等

   //线程执行完成、取消、发生异常时发生
   bkgw_异步线程.RunWorkerCompleted
   参数RunWorkerCompletedEventArgs e几个重要属性
   e.Error如果不为null值,表示发生了异常,可以能过e.Error.Message取得异常信息
   e.Result由DoWork事件的参数e.Result属性将值传过来
   e.Cancelled如果取消线程,此参数为true

5、函数
   //开始线程
   bkgw_异步线程.RunWorkerAsync(tb_数值.Text);

   //取消线程
   bkgw_异步线程.CancelAsync();

   //报告线程进度
   bkgw_异步线程.ReportProgress(percentDone);

6、进度条对像的几个重要属性
   progressBar1.Value进度条递增一个值,前进一格
   progressBar1.IsIndeterminate = true;进度条为重复模式,在不知道操作结束时,可以使用此模式
   progressBar1.IsIndeterminate = false;取消重复模式

7、实例代码,输入一个数字N,实现1-N的累加,例子是看到书上的,增加了一些自己的体会

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值