C#中用timer控件定时查询数据库,刷新dataGridView1,不定时的出错
C#中用timer控件定时查询数据库,刷新dataGridView1,不定时的出错.代码如下。昨天的情况是,刷新正常,但我在打开别的界面的时候就会出错,今天是刷新也不正常...
C#中用timer控件定时查询数据库,刷新dataGridView1,不定时的出错.代码如下。昨天的情况是,刷新正常,但我在打开别的界面的时候就会出错,今天是刷新也不正常,经常出错。
private void Form1_Load(object sender, EventArgs e)
{
DataGridView.CheckForIllegalCrossThreadCalls = false;
aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);
aTimer.Interval = 2000;
aTimer.Enabled = true;
}
private void TimeEvent(object source, ElapsedEventArgs e)
{
aTimer.Enabled = false;
refresh_datagridview1();
aTimer.Enabled = true;
}
private void refresh_datagridview1()
{
this.UseWaitCursor = true;
dataset = quanjubianliang.GetDataset("select * from wangchengqingkuang ");
dataGridView1.DataSource = dataset.Tables[0];
dataGridView1.Refresh();
this.UseWaitCursor = false;
} 展开
private void Form1_Load(object sender, EventArgs e)
{
DataGridView.CheckForIllegalCrossThreadCalls = false;
aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);
aTimer.Interval = 2000;
aTimer.Enabled = true;
}
private void TimeEvent(object source, ElapsedEventArgs e)
{
aTimer.Enabled = false;
refresh_datagridview1();
aTimer.Enabled = true;
}
private void refresh_datagridview1()
{
this.UseWaitCursor = true;
dataset = quanjubianliang.GetDataset("select * from wangchengqingkuang ");
dataGridView1.DataSource = dataset.Tables[0];
dataGridView1.Refresh();
this.UseWaitCursor = false;
} 展开
1个回答
展开全部
你上面还设置了不检查跨线程,也许隐藏了出错的真正原因
也可以开后台线程,invoke刷新界面
还有设置datasource之前不妨先设置为null
如果业务逻辑不需要修改数据,那设置为只读最好
设置CausesValidation = false
更多追问追答
追问
请问是不是这样,先开一个后台线程,然后在后台线程里调用timer去定时刷新
追答
上面12条你可以先不管,345你都照做看是否还出错,如果还出错,再说,也可以留联系看。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询