Winform中进厂要运行一些比较好使的程序,这个时候如果不对执行的方法加以控制,很可能就会造成系统的“假死”,处理方法也比较多,比较常用的是使用Application.Devents();但是对于没有循环的程序,这种方法就失效了,今天研究了一下.Net自带的的BackgroundWorker,使用了一下,感觉效果还是不错的,对于循环程序还是非循环程序都有比较好的效果,使用方法总结一下:
1、首先在界面上添加一个backgroundWorker控件,方法就比较简单了,直接拖动就可以了;
2、如果要显示进度条和进度百分比,在程序初始化的时候可以设置一下
this.backgroundWorker1.WorkerReportsProgress= true;
3、实现下面三个方法
private void backgroundWorker1_DoWork(object sender,
DoWorkEventArgs e)
private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgse)
private void backgroundWorker1_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
其中,第一个方法执行的是运算比较耗时的程序,
第二个方法是进度条改变赋值的方法
第三个方法是程序(比较耗时部分)执行结束后的动作
4、调用方法
在触发按钮的事件中进行启动,方法是his.backgroundWorker1.RunWorkerAsync(); 执行这个语句以后程序会自动启动backgroundWorker1_DoWork()方法,并检测方法的执行进度,监测backgroundWorker1_RunWorkerCompleted()方法
5、需要说明的问题:如果想比较简单的实现这个方法,可以讲ProcessBar的Style设置为Marquee,这样第二个方法我们就可以直接忽略,简化处理过程,同时效果也较好。