C# 如何从不同的线程在DataGridView中添加行和更改单元格值?

C# 如何从不同的线程在DataGridView中添加行和更改单元格值?,c#,multithreading,winforms,datagridview,C#,Multithreading,Winforms,Datagridview,我正在windows窗体中使用DataGridView表。 我想添加新行,并从线程内部重复更改同一行的单元格值 现在我知道了如何使用Invoke函数来更改控件的文本。 例如: public void SetControlText(Control control, string text) { if (this.InvokeRequired) { this.Invoke(new Action<Control, string>(SetControlText), new o

我正在windows窗体中使用
DataGridView
表。
我想添加新行,并从线程内部重复更改同一行的单元格值

现在我知道了如何使用
Invoke
函数来更改控件的文本。
例如:

public void SetControlText(Control control, string text)
{
  if (this.InvokeRequired)
  {
    this.Invoke(new Action<Control, string>(SetControlText), new object[] { control, text });
  }
  else
  {
    control.Text = text;
  }
}
public void SetControlText(控件控件,字符串文本)
{
if(this.invokererequired)
{
调用(新操作(SetControlText),新对象[]{control,text});
}
其他的
{
control.Text=Text;
}
}

但是,我不知道如何为
DataGridView

执行此操作,它的工作方式完全相同,例如:

public void SetCellText(DataGridView control, int x, int y, string text)
{
    if (this.InvokeRequired)
    {
        this.Invoke(() => SetCellText(control, x, y, text));
    }
    else
    {
        control[x, y] = text;
    }
}

我只更改了
Invoke
调用以使用lambda操作-我更喜欢这种方式,但您的方式也会起作用…

如果我使用lambda表达式,我必须将其委托,否则它将抛出错误
无法将lambda表达式转换为系统。委托