
右击backgroundworker实例,在菜单中选择“属性”
在属性窗口中,点击闪电按钮切换到控件的事件列表
分别在DoWork 和RunWorkerCompleted的属性处双击来生成绑定事件,可以看到后台自动生成了事件签名
为了调用backgroundworker控件,在窗口中拖入一个按钮。另外,拖入一个label来显示结果
双击按钮,进入后台代码。在单击事件写上测试代码,如下图所示。其中,
label1.Text = "start"表明后台处理开始
backgroundWorker1.RunWorkerAsync()调用backgroundWorker1
为了模拟复杂费时间的处理,在Dowork事件中加入如下代码,代码含义是:循环5次,每次暂停1秒钟,总共暂停5秒钟。
for (int i = 0i <5i++)
{
Thread.Sleep(1000)
}
在RunWorkerCompleted事件中加入如下代码,代码含义是:复杂费时间的处理完成后,给出提示。
label1.Text = "finish"
运行工程,测试效果。点击按钮,label的内容变成start,这时等上5秒钟,label的内容变成finish,测试成功
我们写一个程序,来实现程序等待时间的秒数是5秒的时候程序d出一个消息框,我们不用多线程,而是用backgroundWorker(其实是封装好了的多线程)组件实现,我们当然也不用timer,而是用循环,一般循环会导致程序不响应,不过放在backgroundWorker就没这个问题了2
首先新建一个程序
3
在左侧工具中,拖入backgroundWorker控件
4
在拖入的backgroundWorker上双击,打命代码窗口
5
我们写入语句
while (DateTime.Now.Second != 5)
{
}
这个代码的意思是,当时间秒数不等于5时,循环,所以是个空循环,其实就是占用时间的循环
我们回到程序界面,选中backgroundWorker
然后在属性窗口,点击红框的事件图标
我们在RunWorkerCompleted上双击,打开代码窗口
我们填入以下代码
MessageBox.Show("异步执行完毕")
这句话的意思是,当backgroundWorker1执行完毕后,会d出这么一句话
我们回到程序主界面,往窗体拖入一个按扭
双击按钮打开代码窗口
我们填入以下代码
backgroundWorker1.RunWorkerAsync()
这句话的作用是启动backgroundWorker1的运行
好,我们现在启动程序
我们点击程序上的按钮,点击后,程序还是很灵活,没有不响应,因为backgroundWorker的异步功能,如果没有backgroundWorker,那么现在窗口肯定假死了
对照着系统的时间,秒针跑到5的时候,消息窗口d了出来
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)