【C#利用后台动态加载数据】Winform“防界面卡死”
2011-10-14 16:40
579 查看
废话:最近遇到的项目发现,对于Winform获取大数据量时,界面假死,体验效果非常差。身为测试员,有义务也有责任提出BUG。每次测试都面对卡了超过5秒的界面,实在是一种折磨,更是一种自杀行为。与是自己便研究了下,可以通过多线程来处理,当然也可以通过后台来获取数据。如果用多线程的话可以解决界面卡死的情况,但是对于动态加载数据的话可能复杂些。因为多线程的话,需要执行完一个线程再把数据更新出来,智能化不够高。使用后台的话,可以随时报告获取的数据,能够精确到某一条,而且使用起来很方便,因为是已经封装好了的。
所使用的类:using System.ComponentModel下的BackgroundWorker ;
该类下有四个重要的方法:DoWork、ProgressChanged、RunWorkerCompleted、RunWorkerAsync,两个重要的属性WorkerSupportsCancellation、WorkerReportsProgress
方法:
1.DoWork:意思就是利用后台具体做什么,绑定时间时传入的参数是方法名
2.ProgressChanged:进度发生变化时后台该做什么,绑定时间时传入的参数是方法名
3.RunWorkerCompleted:后台工作完后该做什么,绑定时间时传入的参数是方法名
4.RunWorkerAsync:启用后台,后台开始运行
属性:
1.WorkerSupportsCancellation:是否支持异步取消
2.WorkerReportsProgress:是否报告进度更新,这个属性很重要,必须启用才能对进度进行报告
下面进入后台动态加载数据的例子:
我们先做一个简单的界面如图:
View Code
注意:在后台中定义三个方法的时候,格式必须是套用模版。
大家可以运行下效果,显然这样才是用户所需要的,大数据量若要一次性取出或者是单线程来操作的话,体验效果极差。
软件若要想得到认可,功能算是一方面,用户体验也发挥着举足重轻的作用。虽然某软件使用了什么很先进的技术,但是用户体验效果极差,用户往往会权衡下选择
更方便的那一款。
下载地址:http://files.cnblogs.com/Zeech-Lee/%E5%90%8E%E5%8F%B0%E6%93%8D%E4%BD%9C.rar
喜欢我的话,就关注我吧!
所使用的类:using System.ComponentModel下的BackgroundWorker ;
该类下有四个重要的方法:DoWork、ProgressChanged、RunWorkerCompleted、RunWorkerAsync,两个重要的属性WorkerSupportsCancellation、WorkerReportsProgress
方法:
1.DoWork:意思就是利用后台具体做什么,绑定时间时传入的参数是方法名
2.ProgressChanged:进度发生变化时后台该做什么,绑定时间时传入的参数是方法名
3.RunWorkerCompleted:后台工作完后该做什么,绑定时间时传入的参数是方法名
4.RunWorkerAsync:启用后台,后台开始运行
属性:
1.WorkerSupportsCancellation:是否支持异步取消
2.WorkerReportsProgress:是否报告进度更新,这个属性很重要,必须启用才能对进度进行报告
下面进入后台动态加载数据的例子:
我们先做一个简单的界面如图:
View Code
private void button1_Click(object sender, EventArgs e) { DirectoryInfo di = new DirectoryInfo(@"C:/"); FileInfo[] fi = di.GetFiles(); progressBar1.Maximum = fi.Length - 1;//设置进度条的最大值 Bw.WorkerSupportsCancellation = true; Bw.WorkerReportsProgress = true; Bw.DoWork += new DoWorkEventHandler(Add);//绑定事件 Bw.ProgressChanged += new ProgressChangedEventHandler(Progress); Bw.RunWorkerCompleted+=new RunWorkerCompletedEventHandler(End); Bw.RunWorkerAsync(); }
注意:在后台中定义三个方法的时候,格式必须是套用模版。
大家可以运行下效果,显然这样才是用户所需要的,大数据量若要一次性取出或者是单线程来操作的话,体验效果极差。
软件若要想得到认可,功能算是一方面,用户体验也发挥着举足重轻的作用。虽然某软件使用了什么很先进的技术,但是用户体验效果极差,用户往往会权衡下选择
更方便的那一款。
下载地址:http://files.cnblogs.com/Zeech-Lee/%E5%90%8E%E5%8F%B0%E6%93%8D%E4%BD%9C.rar
喜欢我的话,就关注我吧!
相关文章推荐
- 【C#利用后台动态加载数据】Winform“防界面卡死”
- 【C#利用后台动态加载数据】Winform“防界面卡死”
- 【C#利用后台动态加载数据】Winform“防界面卡死”
- (转)【C#利用后台动态加载数据】Winform“防界面卡死”
- 【C#利用后台动态加载数据】Winform“防界面卡死”
- 利用js将ajax获取到的后台数据动态加载至网页中的方法
- c# winform 欢迎界面时加载数据
- C# WinForm利用sideBar动态加载菜单栏,并创建菜单栏事件
- C# WinForm利用sideBar动态加载菜单栏,并创建菜单栏事件
- 利用js将ajax获取到的后台数据动态加载至网页中
- C#利用反射技术实现winform界面动态存储
- 在jquery mobile制作app的几个页利用ajax将后台数据json数组动态加载到列表里面
- 利用js将ajax获取到的后台数据动态加载至网页中
- C#中/winform中,给已经绑定数据的datagridview后台动态添加新行
- 转载 C# Winform利用POST传值方式模拟表单提交数据(Winform与网页交互)
- C# Winform利用POST传值方式模拟表单提交数据(Winform与网页交互)
- html中的数据岛:利用DSO和javascript在html中动态加载和浏览xml数据
- C# Winform利用POST传值方式模拟表单提交数据
- 动态事创建的a标签上利用jq滑过元素执行事件通过ajax获取后台数据根据鼠标位置展示数据内容,鼠标离开消失