十年一剑

君子 自强不息 厚德载物

博客园 首页 新随笔 联系 订阅 管理
为了体现良好的用户体现,你可能要使用多线程.

单线程在完成一个冗长任务时会让界面停止绘画.异步调用则产生多个线程来完成任务,却有机会更新界面.

在.NET1.1中,使用多线程是很麻烦的事情,你要声明委托,实现函数,进行异步调用,在回调函数中了解工作状态.代码下载:

这很麻烦,实际上我们使用多线程,就是为了1.完成一个异步的任务,2.在界面上显示进度的任务,3.用户可以取消任务.既然如此,为什么要这么麻烦呢?在.NET2.0中就有一个组件,可以完成类似的任务了!而且,有人实现了1.1的组件,它的名字就是BackgroundWorker.它使用起来非常简单,组件公开了三个事件,可以完成执行任务,显示进度,取消任务.拥有两个属性.
   this.m_BackgroundWorker.WorkerReportsProgress = false;
   this.m_BackgroundWorker.WorkerSupportsCancellation = true;
   this.m_BackgroundWorker.DoWork += new ThreadHelper.DoWorkEventHandler(this.OnDoWork);
   this.m_BackgroundWorker.RunWorkerCompleted += new ThreadHelper.RunWorkerCompletedEventHandler(this.OnCompleted);
这个组件和.NET2.0的一样!用法都相同.这就方便执行行后台线程了!

1.1的组件包含在 IssueVision中.下载
2.0的在System.ComponentModel.命名空间(也是BackgroundWorker名称都一样). 2.0例子请下载



链接:

Creating a better BackgroundWorker: CancelImmediately and other goodies

posted on 2005-11-12 10:04  葵花宝典  阅读(615)  评论(0编辑  收藏  举报