费时操作界面无假死的BackgroundWorker方法
2008-06-17 17:32
204 查看
做项目的时候需要在生成一份Word文档的时候保证界面不假死,同时要有进度条显示。 网上找了些异步线程的方法,如MethodInvoker及其他代理类的BeginInvoke方法,但是看得不是很明白,用起来发现进度条可以显示,但是界面还是呈呆滞状。 后来发现VS里面有一个BackgroundWorker的组件,刚好是用来解决这个问题的。十分方便。 基本来说,只需要在界面中添加上这个组件。简单的设计几步就可以完成在费时操作下界面仍旧相应的任务了。下面主要说一下BackgroundWorker需要设置的属性和事件。 1.DoWork事件 在这个事件的处理函数中运行后台所需要进行的费时操作。 附响应函数形式:
2.RunWorkerCompleted事件 在这个事件的处理函数中进行费时操作完成后的处理。 3.ProgressChanged事件 如果需要用到进度条,就在这里面进行响应。这个事件由BackgroundWorker类的ReportProgress函数触发。这个函数接受一个参数(0,100)的一个int类型,就是进度条当前应当指示的位置。如果需要用进度条的话还需要设置WorkerReportsProgress为true。 响应函数设置好之后,在响应用户的函数(比如点击按钮)中用bgWorker.RunWorkerAsync()来触发DoWork事件。RunWorkerAsync函数可以有参数。参数在DoWork响应函数中用e.Argument来访问。
void bgWorker_DoWork(object sender, DoWorkEventArgs e)
2.RunWorkerCompleted事件 在这个事件的处理函数中进行费时操作完成后的处理。 3.ProgressChanged事件 如果需要用到进度条,就在这里面进行响应。这个事件由BackgroundWorker类的ReportProgress函数触发。这个函数接受一个参数(0,100)的一个int类型,就是进度条当前应当指示的位置。如果需要用进度条的话还需要设置WorkerReportsProgress为true。 响应函数设置好之后,在响应用户的函数(比如点击按钮)中用bgWorker.RunWorkerAsync()来触发DoWork事件。RunWorkerAsync函数可以有参数。参数在DoWork响应函数中用e.Argument来访问。
相关文章推荐
- iOS某操作霸占主线程过久导致界面假死的一种解决方法
- iOS_某操作霸占主线程过久导致“界面假死”的一种解决方法
- Windows 8/8.1 进入欢迎&登录界面前黑屏且等待时间过长&登录假死解决方法
- LSMW批处理使用方法(1)_总述及操作界面说明(ZZ)
- 一个解决循环内界面假死的方法
- 一个解决循环内界面假死的方法
- LSMW批处理使用方法(1)_总述及操作界面说明
- SAP LSMW批处理使用方法(1)_总述及操作界面说明
- 程序界面假死的一种解决方法 - 线程
- Winfrom界面异步操作的一个解决方法
- Block在界面之间的基本使用(传值操作, 方法嵌套)
- linux图形界面和文本界面的切换操作方法
- linux 图形界面和文本界面的切换操作方法
- Windows资源管理器假死卡住不能操作的解决方法
- 界面操作劫持攻击原理与防御方法
- MFC 界面假死问题解决方法
- 在WinFrom应用中,如果使用后台线程来操作界面应调用Control.Invoke()方法
- Qt多线程和GUI界面假死(分析QThread::exec函数的源码,旧的QMutexLocker方法其实很好用,挡住别人进入抢占资源)
- wxpython 拖动界面时进入假死状态(未响应)解决方法
- Centos shell bash操作界面 不显示路径 改为显示路径的方法