本文主要是介绍还记得BackgroundWorker吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天一早醒来,猛然发现,很久没写博客了,算一算,其实应该不到一个月,可总觉得寰宇一个月,世上已千年。是啊,于是内心萌发了一股冲动的力量,今天该写点什么,可是,一时想不出来。
打开电脑,突然想起来,昨天下午,有位仁兄和我讨论过一个事,不妨拿来说说。
她说她的牛逼程序要处理一堆东东,要弄个进度条作提示,不过进度条是在另一个窗口中的,她的想法是,在开始处理数据时弹出进度对话框,实时显示处理进度,当处理完成后关闭对话框。乍看起来其实不难,不过她遇到了以下问题,故在群里提问。
1、模态对话框的问题。
这问题好办,一般来说,要长时间来处理数据,应该考虑后台异步操作,用砖家的话讲就是多线程。不过她在显示窗口时调用了ShowDialog方法,这样代码会一直停在那里,直到窗口关闭。
如果是异步操作,通常来说,在启动后台任务后会马上返回,这么一来,只要把代码的顺序调一下就可以解决这问题,先启动后台任务,再调用ShowDialog方法,这样一来,就算代码停在ShowDialog那里也不会影响后台任务的执行。
2、如何控制其他窗口中控件。
可以在在窗口类中定义公共方法来对控件进行某些操作,之后在其他地方就可以通过这些公共方法来调控。如果是跨线程调用,应当考虑使用委托或事件来调用。不然你学了委托和事件干吗呢?
另一种方法就是直接把进度窗口中的ProgressBar控件声明为public,这样其他类就可以轻松访问了。
3、后台任务如何更简单。
方法是灵活的,有很多种。最简单的是利用.NET 4.5和C# 5.0 中的新特性,这种方法肯定是最简单的。第二种则是使用.NET 4 中新加的Task类来调度线程;比较传统,在2.0时代用得最多的方法是直接用Thread类。
但是,有一个组件是专为后台任务而开放的,忘了没有?——BackgroundWorker,也许有些朋友
这篇关于还记得BackgroundWorker吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!