Winform程序下Datagridview的使用问题。
我在winform下加了一个datagridview控件,想让他显示本地数据库中的一个表内容。我绑定了数据源,如图
[img=http://b251.photo.store.qq.com/psb?/V13E5cTC2ZosjS/BRDm11PZEGfrnfjCtmIk.zi52WTBXIt9E9QTAdhwrYU!/b/dESvoZX.CQAA&bo=7gEkAew!][/img]
因为表格中的数据是不断变化的,所以我想让表格中的数据每5秒刷新一下。显示当前表格中的内容。
所以,我在load中添加了一个线程,让他执行刷新事件。线程代码如下
//启动 短信记录刷新 线程名称为 newthread3
newthread3 = new Thread(new ThreadStart(t_record_flash));
newthread3.IsBackground = true;
newthread3.Start();
定义了t_record_flash()
public void t_record_flash( ) //短信记录刷新事件
{
while (true)
{
try
{
this.t_historyTableAdapter.Fill(this.messageMedomDataSet.t_history);
}
catch(System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
Thread.Sleep(5000); //5秒之后再次执行该时间,不停刷新
}
}
现在我运行程序,会出现如下图错误。
[img=http://b251.photo.store.qq.com/psb?/V13E5cTC2ZosjS/8m5kPD7HSF376sQrgUao*x8yK*cbaMqCIK19GsxYv9Q!/b/dFo1o5X9CgAA&bo=fgGqAPM!][/img]
。。但是如果我在 While(true)处打上断点,一步一步执行,也没发现什么错误啊。。。求大神 谢谢
------解决方案--------------------你所说的功能没有必要用线程来实现啊,用一个TIMER就行了。而且我实现起来更加简单
------解决方案--------------------用TIMER吧,不用考虑访问UI线程的问题
------解决方案--------------------
这个是数据绑定错误,不是流程上面的。
------解决方案--------------------trimer 啊..........在trimer中重新绑定数据库就得了...或者你要是觉得你的方法可行,就在你的方法中重新绑定数据吧.
------解决方案--------------------一个事件中多次改变UI显示的内容,UI显示的内容只会接受第一次后最后一次事件改变的结果。因此你在每次事件结束,强制刷新一下UI。datagridview.Refresh();
------解决方案--------------------如果不用自动刷新数据 第一次绑定数据会有问题吗
------解决方案--------------------
这样做重绘也很可能报出异常。
------解决方案--------------------