背景
经常做些小程序或者小DEMO的时候会用到异步,多线程来执行一些比较耗时的工作同时将进度及时进行反馈。我通常会使用位于【 System.ComponentModel】命名空间下的BackgroundWorker控件。虽说该控件的属性和事件很简单,但是,我也老是会忘记。所以,本篇文章的目的就是把BackgroundWorker控件封装一下。我只需要关注,我要做的事情(DoWork),做完后要做的(RunWorkerCompleted),进度反馈(ProgressChanged)就行了。
项目结构一览
下面是Demo的项目结构图:
最简单的调用
封装的BackgroundWorker类中对各个事件提供了一个默认的实现,因此在控制台的测试项目中的项目中的使用尤为简单,见以下代码
class Program { static void Main() { //获取一个BackgroundWorker BackgroundWorker bw = BackgroundWorkerExtension.InitNewBackgroundWorker(); //异步执行 bw.RunWorkerAsyncExt(); Console.ReadLine(); } }
运行的效果图为:
总结
只是一个小小的封装,代码很简单,从此伙伴们使用BackgroundWorker就可以用这个封装,一方面可以避免自己忘记,另一方面,使用也更加简洁!