利用数据绑定(DataBinding)简化多线程数据展示
2010-08-21 17:51
239 查看
经常做WinForm开发的人可能会遇到这样一种情况,WinForm程序后台有许多线程在执行任务,前台界面需要适时或定时显示后台任务执行的情况。此类任务界面通常如下:
![](http://pic002.cnblogs.com/img/phenixni/201008/2010082117363843.png)
这里存在一个问题是如何在界面上显示后台线程上的状态数据,也就是多线程如何访问控件。
.NET中的控件并不是线程安全的,因此我们通常是用如下方法在界面上显示后台线程的数据:
做完这些后就可以点击验证,执行结果如下:
![](http://pic002.cnblogs.com/img/phenixni/201008/2010082117370711.png)
最后通过比对2种方法的实现,执行结果,可以得出,在.NET中利用数据绑定(DataBinding)可以简化多线程数据展示,使得代码的可维护性更高,对于新人也更容易入手。当然,示例中也存在一些问题,如更新不及时,帮定数据源有限制等。但是想比解决的问题,这些代价完全可以承受,并且通过添加简单的同步代码就可以解决。
注:如需Demo,请留下邮箱(不知道博客园怎么上传资源 *_*|| );
![](http://pic002.cnblogs.com/img/phenixni/201008/2010082117363843.png)
这里存在一个问题是如何在界面上显示后台线程上的状态数据,也就是多线程如何访问控件。
.NET中的控件并不是线程安全的,因此我们通常是用如下方法在界面上显示后台线程的数据:
public class TaskEntity { private int _TaskId = 0; private int _TaskSuccess = 0; private int _TaskFail = 0; public int TaskId { get { return _TaskId; } set { _TaskId = value; } } public int TaskSuccess { get { return _TaskSuccess; } set { _TaskSuccess = value; } } public int TaskFail { get { return _TaskFail; } set { _TaskFail = value; } } public int TaskAll { get { return _TaskSuccess + _TaskFail; } } }
然后定义一个全局的数据源用于存放这些任务的引用,同时将该数据源邦定到前台界面上然后启动2个后台线程 private Thread thread1; private Thread thread2; void btnBS_Click(object sender, EventArgs e) { workStatus = !workStatus; if (workStatus) { thread1 = new Thread(Dowork1); thread1.Start(); thread2 = new Thread(Dowork2); thread2.Start(); } }
最后定义数据更新方法
private void UpdateControlValue() {
dataGridView1.Invalidate();
txtAll.DataBindings[0].ReadValue();
txtFail.DataBindings[0].ReadValue();
txtSuccess.DataBindings[0].ReadValue();
}
做完这些后就可以点击验证,执行结果如下:
![](http://pic002.cnblogs.com/img/phenixni/201008/2010082117370711.png)
最后通过比对2种方法的实现,执行结果,可以得出,在.NET中利用数据绑定(DataBinding)可以简化多线程数据展示,使得代码的可维护性更高,对于新人也更容易入手。当然,示例中也存在一些问题,如更新不及时,帮定数据源有限制等。但是想比解决的问题,这些代价完全可以承受,并且通过添加简单的同步代码就可以解决。
注:如需Demo,请留下邮箱(不知道博客园怎么上传资源 *_*|| );
相关文章推荐
- 利用数据绑定(DataBinding)简化多线程数据展示
- 利用数据绑定(DataBinding)简化多线程数据展示
- Android 中利用ViewFlipper 滑动屏幕切换页面,ListView展示数据
- Android数据绑定框架DataBinding,堪称解决界面逻辑的黑科技
- 利用奇异值分解(SVD)简化数据
- Android---------通过OkHttp网络请求利用RecyclerView展示数据
- ASP.NET2.0简化的控件与简化的数据绑定
- Android DataBinding 数据绑定
- LINUX利用多线程完成多个客户端向服务器发送数据
- iphone利用xml传递数据,展示载Table界面中
- 利用数据类型,简化程序逻辑
- 利用构建数据类型,简化代码,提高编写效率!
- 利用UpdatePanel无刷新 更新数据绑定控件
- 利用多线程计算目录数据大小
- 获取系统当前时间,绑定展示数据
- OkHttp+RecyclerView,利用OkHttp请求数据,并RecyclerView展示
- C#利用Lambda和Expression实现数据的动态绑定
- 机器学习实战-13利用PCA来简化数据
- (4.6.19)Android数据绑定框架DataBinding,堪称解决界面逻辑的黑科技
- GridView动态添加列并判断绑定数据DataTable的列类型控制展示内容