linq到sql和后台工作者

时间:2014-05-05 05:42:50

标签: c# linq linq-to-sql

我在backgroundworker中使用LINQ查询。当我运行程序并执行查询时,它可以正常工作。但是当我手动更改表中的值并再次运行查询时,这会将最后一个结果返回给我,我应该关闭程序并再次运行它以查看更改!

请帮我解决这个问题。

clockEntities objDb = new clockEntities();
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) 
{
       var inOutList = (from may in objDb.Taradods
       where may.Date.Contains("2014/02") && may.BarCodeNo == 8011
       select may);
       this.Invoke(new MethodInvoker(delegate() { 
           dataGridView1.DataSource = inOutList.ToList(); }));
}

1 个答案:

答案 0 :(得分:0)

您的DataContext过时了。将构造移动到DoWork方法中: 无论如何,DataContext构造非常轻,因此它不会对性能产生太大影响。

private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)  
{
    //==> Move it here     clockEntities objDb = new clockEntities();

    var inOutList = (from may in objDb.Taradods
    where may.Date.Contains("2014/02") && may.BarCodeNo == 8011
    select may);

    this.Invoke(new MethodInvoker(delegate() { 
    dataGridView1.DataSource = inOutList.ToList(); }));
}