this.Invoke抛出无法从'方法组'转换为'System.Delegate'

时间:2014-04-15 14:37:53

标签: c# winforms invoke

我不知道如何解释,所以这是我的代码:

this.Invoke(listBox1.Items.Add, new Object[] { e.Data.ToString() });

但是,如果我没有任何错误,一切都会好的,但遗憾的是我有2个错误:

错误1

  

最佳重载方法匹配' System.Windows.Forms.Control.Invoke(System.Delegate,params object [])'有一些无效的论点

错误2

  

参数1:无法从'方法组转换'到' System.Delegate'

我应该怎样做才能克服这些例外情况?

3 个答案:

答案 0 :(得分:8)

Invoke要求您使用委托作为第一个参数。 ListBox.Items.Add方法,而非委托。

但是,你可以使用它:

this.Invoke((Action)delegate()
{
    listBox1.Items.Add(e.Data.ToString());
});

答案 1 :(得分:5)

设置要使用的委托。

Invoke(new Action(() => 
{ 
  // Do it 
}));

答案 2 :(得分:-1)

您可以检查控件是否需要调用,如果是,则调用它:

if(listBox1.InvokeRequired)
     listBox1.Invoke((Action)(()=> listBox1.Items.Add(e.Data.ToString())); //if e.Data is the object to add it to listBox!