有一个DataTable绑定到DataGridView
现在需要在多线种中操作DataTable(添加、删除或更新),然后重新绑定DataGridView目前用委托来更新,DataGridView经常成假死状态或更新结果没有预期高分求解决办法。
现在需要在多线种中操作DataTable(添加、删除或更新),然后重新绑定DataGridView目前用委托来更新,DataGridView经常成假死状态或更新结果没有预期高分求解决办法。
解决方案 »
- SQL如何查询数据库繁体的记录
- .net 的textbox的Validating 事件 反应太慢
- 动态生成控件的一个小问题
- 求一正则表达式,并希望大家能介绍几本关于其的好书!谢谢了
- 300分问一个问题:如何在子窗体上按键,让父窗体中的控件获得,并且当焦点在子窗体中的控件上时,光标仍在父窗体的控件上?
- 求助:关于GDI+
- 大家给看看,在winfrom中多个窗口共用一个dataset用哪种方法最好?
- c#winform MDI 的怎样获得主窗口
- 如何获取exchange服务器的邮件存储组?
- 控件上字体的锯齿怎么消除
- 有关DataList中套用用户自定义控件的翻页功能
- 关于动网中的__VIEWSTATE
同时还有同步问题
Moniter.Enter();//这句话插在操作控件之前,作用是让线程以队列方式调用以后的代码,也就是防止死锁
在操作之前调用
防止死锁
This type is safe for multithreaded read operations. You must synchronize any write operations.
http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx
而搂主的耗时操作,也正是这个DataGridView更新操作,所以没有达到多线程的效果,因为耗时的
操作仍然是主线程完成的,导致主线程处于假死状态。搂主不妨使用使用微软不提倡使用的方法:Control.CheckForIllegalCrossThreadCalls = false;
同时把更新DataGridView的操作也放回多线程中去。为防止出现UI资源共享冲突,搂主需要在执行更新DataGridView之前,使用lock方法锁定DataGridView