时间:2019-03-08 标签:c#datagridviewredcross

c# datagridview red cross

我有一个数据网格视图和数据表。我使用数据表作为数据网格视图的数据源。我使用线程添加和更新数据,如下所示。如果我处理完数据,我会删除它。但是有两次datagridview前面有big red x。我找不到为什么?以下是我的示例。

注意:这种情况并不总是发生,我只遇到过两次这个错误,但我需要处理!提前致谢。

  Thread listData;
  DataTable dt = new DataTable();
  Form1_load()
  {
    dataGridview.DataSource = dt;
  }

   public void ListData()
   {
      foreach(var item in data)
      {
          if(item.delete)
          { 
            var row = dt.Rows.Find(item.id); 
            if(row != null) { row.Delete();}
            continue;
          }

          listData = new Thread(delegate() { InsertOrUpdateData(item.Id); });
           listData.Start(); listData.Join();
       }

   }

      public void InserOrUpdateData(int id)
      {
         // Here I retrieve some data from database
         // and insert or update to the datatable
          // like dt.Rows.Add(fields) and dt.Rows.Find(id)["fieldName"] = "new Value"
      }

你需要使用Invoke方法

if (gridView.InvokeRequired)
    gridView.Invoke(new MethodInvoker(() => gridView.DataSource = YOUR_DATASOURCE));
else
    gridView.DataSource = YOUR_DATASOURCE;