BackgroundWorker可以解决执行耗时操作界面无法响应的问题,另外也提供异步操作取消以及下载进度报告等;它常用的属性有:

(1).CancellationPending属性,用来指示应用程序是否已请求取消后台操作;

(2).IsBusy属性,指示异步操作是否正在运行;

(3).WorkReportsProgress属性,指示Backgroundworker能否报告进度;

(4).WorkerSupportsCancellation属性,指示Backgroundworker是否支持异步取消操作。

常用方法有:

(1).public void CancelAsync():请求取消挂起的后台操作;

(2).public void RunWorkerAsync():开始执行后台操作(不带参数);

(3).public void RunWorkerAsync(object argument):开始执行后台操作(带参数);

(4).public void ReportProgress(int percentProgress):用于引发ProgressChanged事件。

下面是完整示例:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace BackGroundWorker
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{BackgroundWorker worker = null;public MainWindow(){InitializeComponent();worker = new BackgroundWorker();}private void MyDoWork(object sender, DoWorkEventArgs e){for(int i = 0; i <= 100; i++){worker.ReportProgress(i);Thread.Sleep(2000);//如果检测到点击了取消按钮,则退出当前循环if (true == worker.CancellationPending){e.Cancel = true;break;}}}private void MyDoWork1(object sender, DoWorkEventArgs e){int number = 0;if(e != null){number = (int)e.Argument;}for (int i = 0; i <= 100; i++){worker.ReportProgress(i);Thread.Sleep(2000);//如果检测到点击了取消按钮,则退出当前循环if(true == worker.CancellationPending){e.Cancel = true;break;}}}//当后台操作已完成、被取消或引发异常时发生private void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e){btn_start.IsEnabled = false;btn_start1.IsEnabled = false;btn_cancel.IsEnabled = false;}private void Backchanged(object sender, ProgressChangedEventArgs e){this.proBar.Value = e.ProgressPercentage;}private void btn_start_Click(object sender, RoutedEventArgs e){//如果支持取消,则为true;否则为false。 默认值为false。worker.WorkerSupportsCancellation = true;//支持进度更新,则为 true;否则为 false。worker.WorkerReportsProgress = true;//调用 RunWorkerAsync()时发生worker.DoWork += new DoWorkEventHandler(MyDoWork);//调用 ReportProgress(System.Int32)时发生worker.ProgressChanged += new ProgressChangedEventHandler(Backchanged);//当后台操作已完成、被取消或引发异常时发生worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunWorkerCompleted);if(!worker.IsBusy){//开始执行后台操作
                worker.RunWorkerAsync();}           }private void btn_start1_Click(object sender, RoutedEventArgs e){//如果支持取消,则为true;否则为false。 默认值为false。worker.WorkerSupportsCancellation = true;//支持进度更新,则为 true;否则为 false。worker.WorkerReportsProgress = true;//调用 RunWorkerAsync()时发生worker.DoWork += new DoWorkEventHandler(MyDoWork1);//调用 ReportProgress(System.Int32)时发生worker.ProgressChanged += new ProgressChangedEventHandler(Backchanged);if(!worker.IsBusy){//开始执行后台操作worker.RunWorkerAsync(100);}         }private void btn_cancel_Click(object sender, RoutedEventArgs e){if (worker.IsBusy && worker.WorkerSupportsCancellation){//请求取消挂起的后台操作
                worker.CancelAsync();}          }}
}

演示效果如下:

转载于:https://www.cnblogs.com/QingYiShouJiuRen/p/11226919.html

C#中BackgroundWorker的介绍相关推荐

  1. c# BackgroundWorker组件介绍(属性、方法、事件)

    c# BackgroundWorker组件介绍(属性.方法.事件) 2008-07-03 16:28 在VS2005中添加了BackgroundWorker组件,该组件在多线程编程方面使用起来非常方便 ...

  2. CC#中List用法介绍详解学习通http://www.bdgxy.com/roundWorker类用法总结学习通http://www.bdgxy.com/

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程h ...

  3. HTML中Css详细介绍

    HTML中Css详细介绍 一.样式表的作用 1.Css样式表,层叠样式表 2.类似于人类的衣服,网页的衣服 3.作用:美化网页 4.优势: 1.内容与表现分离,便于维护 2.样式丰富,页面布局灵活 3 ...

  4. Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍

    1 解决ls查看文件爱呢颜色为白色 方法一: 1.修改~/.bashrc文件,添加如下内容 alias ls='ls --color=auto' 2.source一下,让修改配置生效 source ~ ...

  5. TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别

    TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...

  6. c语言字符串加减_C语言中指针的介绍

    C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...

  7. Linux中 /boot 目录介绍 【转载】

    Linux中 /boot 目录介绍 转自:点击打开链接 一./boot/目录中的文件和目录 Linux系统在本地启动时,目录/boot/非常重要,其中的文件和目录有: (1)系统Kernel的配置文件 ...

  8. 6.支持向量机(SVM)、什么是SVM、支持向量机基本原理与思想、基本原理、课程中关于SVM介绍

    6.支持向量机(SVM) 6.1.什么是SVM 6.2.支持向量机基本原理与思想 6.2.1.支持向量机 6.2.2.基本原理 6.3.课程中关于SVM介绍 6.支持向量机(SVM) 6.1.什么是S ...

  9. 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma

     1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...

最新文章

  1. InnoDB O_DIRECT选项漫谈(一)【转】
  2. Java的char数据类型存储一个中文字符
  3. pr渲染程序选哪个_PR的bug你遇到过几个?
  4. 白帽子讲web安全——认证与会话管理
  5. ng-repeat循环出来的部分调用同一个函数并且实现每个模块之间不能相互干扰
  6. 如何在Ubuntu上安装最新版本的Node js
  7. 2018年测试状况调查
  8. 借款条和还款条的写法(附模板)
  9. Atitit json array to csv 目录 1. Lib 1 1.1. Apache csv lib 1 1.2. Org.json.jar cdl模式 1 2. other 1 2
  10. win10 cortana 没反应解决方法
  11. linux nginx进程占用80端口杀不掉
  12. 虚幻引擎图文笔记:使用MixamoConverter对Mixamo动画重定向成UESkeleton匹配动画
  13. 密钥对和AccessKey
  14. Using GDB To Trace Into a Parallel Worker Spawned By Postmaster During a Large Query
  15. R网格MIC与频繁项集
  16. MySql创建联合索引
  17. matlab的讲稿ppt,Matlab初步(讲稿200508)之一_Matlab讲解_doc_大学课件预览_高等教育资讯网...
  18. 《C++游戏编程入门(第4版)》——1.10 问与答
  19. 三维激光扫描技术在地形测绘中的应用
  20. 微博内容爬取——陈一发儿微博实例

热门文章

  1. ASP.NET Web API参数与模型绑定
  2. Blazor编辑表单状态控件
  3. SQL的TRUNCATE和DELETE
  4. jssdk 获取微信收货地址_微信收货地址共享开发接口讲解
  5. ionic 去掉启动页的加载动画 菊花转
  6. java 类对象_Java中的对象和类是什么?
  7. html鼠标自动向下滑动,基于JavaScript实现鼠标向下滑动加载div的代码
  8. 贵大计算机在职,贵州大学在职研究生招生信息网
  9. c语言switch结构计算利润,求助。。关于用switch编写简易计算器
  10. viso怎么控制连接线_什么是节气门?多久清洗一次?怎么清洗?