BackgroundWroker使用方法备忘

using System;using System.ComponentModel;using System.Windows.Forms;using System.Threading;

namespace WindowsFormsApplication1{    publicpartialclass Form1 : Form    {        public Form1()        {            InitializeComponent();            worker =new BackgroundWorker();            worker.DoWork+=new DoWorkEventHandler(worker_DoWork);            worker.ProgressChanged+=new ProgressChangedEventHandler(worker_ProgressChanged);            worker.RunWorkerCompleted+=new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);            worker.WorkerReportsProgress =true;  //允许进度显示            worker.WorkerSupportsCancellation =true; //允许运行中取消        }

BackgroundWorker worker;

privatevoid Form1_Load(object sender, EventArgs e)        {

}

privatevoid worker_DoWork(object sender, DoWorkEventArgs e)        {            for (int i =0; i <300; i++)            {                Thread.Sleep(100);                //每隔一段时间就向主线程报告进度,以便更新进度条。                //多数情况下,你只需要发送一个整数去更新即可                worker.ReportProgress(i/3);                if (worker.CancellationPending)                {                    //如果任务被取消                    e.Cancel =true;                    worker.ReportProgress(0);                    return;                }            }        }

privatevoid worker_ProgressChanged(object sender, ProgressChangedEventArgs e)        {            pbarThis.Value = e.ProgressPercentage;            lblText.Text ="已经处理了 "+ pbarThis.Value.ToString() +"%";        }

privatevoid worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)        {            if (e.Cancelled)            {                lblText.Text ="任务取消";            }            elseif (e.Error !=null)            {                lblText.Text ="发生错误";            }            else            {                lblText.Text ="任务完成";            }            btnStart.Enabled =true;            btnCancel.Enabled =false;        }

privatevoid btnStart_Click(object sender, EventArgs e)            {            btnStart.Enabled =false;            btnCancel.Enabled =true;

//通知主线程开始进行数据处理            worker.RunWorkerAsync();        }

privatevoid btnCancel_Click(object sender, EventArgs e)        {            if (worker.IsBusy)            {

worker.CancelAsync();            }        }    }}

时间: 2024-11-08 23:58:41

BackgroundWroker使用方法备忘的相关文章

ExtJs4常用配置方法备忘

viewport布局常用属性 new Ext.Viewport({ layout: "border", renderTo: Ext.getBody(), defaults: { bodyStyle: "background-color: #FFFFFF;", frame: true }, //split为true,即可达到上下左右拉伸效果 //layout:fit,填满布局 //collapsible:true,north模块被收缩到最上面 items: [{ re

解析Path方法备忘

public static String parseDataPath(String dataPath){ StringBuilder parseBld = new StringBuilder(); List<String> parseLst = new ArrayList<String>(); if( StringUtils.isNotEmpty(dataPath) ){ String[] parseArry = dataPath.split("/"); int

AR9331出现connect-debounce failed,port 1 disabled解决方法备忘

基于AR9331的路由器,自己画的pcb板子,竟然出现这个错误,百度下,貌似有不少人遇见过这个错误,但是在修改板子前我的固件用的是没问题的,USB完美使用 修改过板子后出现这个问题! hub 1-0:1.0 connect-debounce failed,port 1 disabled 后台串口不停的报这个错误. 最后发现是USB的数据线反了,哈哈,跳线反过来试试! 成功识别U盘没问题了! 备忘一下!

读取带命名空间的Xml文档的方法备忘

很久没有做xml方面的解析,今天接到一个小任务,需要解析xml里面的字段内容,顺带复习了一下xpath方面的知识.需要解析的xml是那种待namespace的文档,一开始解析就碰到问题,我就感觉是命名空间在作怪,印象中之前也处理过这种问题,但时间久远,都忘记了,也没有记录下来. 折腾了一会总算找到了方法,.NET中读取带xml命名空间的xml文档的方式确实麻烦,不够直接.不管怎样,还是记录一下解决方法,省得以后又要被折腾一次. StringReader textReader = new Stri

LSGO类库使用方法备忘——FlexCell

相关类介绍: 1.LSGOUIGridEntity 用于配置FlexCell表格各种参数的实体 有已下三种便捷的方法,均返回已经配置好参数的LSGOUIGridEntity 类的实体 GetNormalGridEntity()          得到普通类型的MisUIGridEntity. GetDark_LightBlueGridEntity()  得到深蓝-浅蓝格调的GridEntity. GetYellow_WhiteGridEntity()    得到黄-白格调的GridEntity.

NetBeans 8.0.1 字体设置方法备忘(Win7)

整体思路是修改jre中的fontconfig.properties文件内容,设定字体覆盖规则: [在Win7下操作很可能会遇到下述这种小问题,所以写在前面:如果开启了UAC,而NetBeans所使用的JRE又安装在 program files 目录,使用某些编辑器(我是使用madedit时遇到的)打开时,并不会提示用户权限权限不足,而是直接将修改后的文件保存至virtualstore文件夹.对于这种情况,有两种解决方法:一是关闭UAC(不一定有效):二是在其它不需要权限的目录将文件修改后再复制到

C++-二维vector初始化大小方法-备忘

来源: C++——二维vector初始化大小方法 1.直接用初始化方法 名字为vec,大小为n*m,初始值为0的二维vector. vector<vector<int> > vec(n, vector<int>(m, 0)); 2.用resize()来控制大小 vector<vector<int> > vec; vec.resize(n);//n行 for (int i = 0; i < n; ++i){ vec[i].resize(m);

jquery中的ajax方法(备忘)

参考:https://www.cnblogs.com/tylerdonet/p/3520862.html 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持. 3.timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设置. 4.a

[转]git使用问题-解决方法 备忘

1-- clone分支,修改文件本地commit后, push回原分支失败,报错: git push   [email protected]'s password:   Counting objects: 21, done.  Compressing objects: 100% (11/11), done.  Writing objects: 100% (11/11), 1010 bytes, done.  Total 11 (delta 9), reused 0 (delta 0)  erro