解决方案 »
- 求助:网页自动登陆,获取动态iframe中数据
- [winform/vs2003]dataGridBoolColumn的问题
- DataGridViewComboBoxColumn 添加items
- c# Form与Form之间参数的传递
- axChartSpace 控件
- 我在招行下了个安全验证的控件,SQL企业管理器就登陆不了了,如何删除SSL安全验证?
- 请教VS2008下用C#和winpcap做抓包程序怎么配置环境?
- 自定义控件的属性中,EditorBrowsable有什么用啊
- 高分请教2.0下(vs2005)获取CPU序列号奇怪问题
- 添加web应用出错,怎么办啊??
- 为什么用DateTime.Now获取当前时间会带有星期几 上下午这种中文啊 入库报错!怎么办?win8系统
- C#怎么把小数点去掉(257.57575757575757575757575758)
改为:
this.Invoke(new InvokeHandler(p => { this.dataGridView1.DataSource = pl.table; }), pl);
或者使用WPF,使用通知形式让界面自动更改。
你可以试试加个中间层BindingSource
第一,滥用阻塞式线程逻辑(循环里边启动一堆线程,你的程序的复杂性和bug程指数放大了),你得程序中不应该有while 循环语句。第二,定是获取数据,不要搞什么“5毫秒刷新”这种逻辑。有数据、得到事件/消息通知之后才去读数据,而不是轮询。
{
pl = GuiDao.ListSectioned(businessClazz, pl);
Thread.Sleep(5);
listSectionedCallback(true, pl, "调用GuiDao失败");
DispMsg(true, pl.table.Rows.Count, "读取失败");
}每一次绑定数据时都不得不创建一个新的、线程安全的 pl.Table,而丢弃原来的 table。但是你弄一个“5毫秒之后”就整个刷新一遍控件显示的逻辑,这就会让程序根本无法继续设计下去。轮询,而且5毫秒去轮询数据源,这只会让一个程序上线时刻就是产品死掉的时刻。
获取数据的方式不是重点,也不是要做成定时,只是要分段加载大量数据的效果,具体看上头怎么设计,设置个Sleep是方便看异步的效果