使用BeginInvoke的Gridview

时间:2020-05-11 19:27:08

标签: c# gridview datatable devexpress gridcontrol

在这里需要您的帮助。 我想做什么? 我基本上是对定义的IP范围发出SNMP请求,并在它们可访问/可访问的情况下将它们显示在DataTable上。我能够发出作为单独任务运行的SNMP请求,但是无法使用结果更新DataTable。作为gridControl在其自己的线程上运行。

请帮助。我在下面粘贴我的代码。

packets = rdpcap('file.pcap')
tcpPackets = []
  for packet in packets:
    if packet.haslayer(TCP):
      tcpPackets.append(packet)

输出:-错误如下图所示 参数2:无法将测试转换为System.Action

1 个答案:

答案 0 :(得分:0)

方法BeginInvoke要求一个委托Error with code:0x80100001。您要发送两个。

您可以简化代码并替换

foreach (var el in result)
{
  string[] obj = new string[2];
  obj[0] = ipAddress;
  obj[1] = el.Data.ToString();
  MethodToAdd(obj);
}

foreach (var el in result)
{
  gridView1.GridControl.BeginInvoke((Action) (() => 
  {
    gridView1.AddNewRow();
    gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns[0], "1");
    gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns[1], ipAddress);
    gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns[2], "3");
    gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns[3], "4");
    gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns[4], el.Data.ToString());
    gridView1.UpdateCurrentRow();
  }));
}     

BeginInvoke上呼叫GridControl,并在那里处理所有事情。