我有以下代码(删除无关)
//top of class declaration
private delegate void UpdateFormElements(string status, bool addEmptyRow);
//inside a function in my class
if(lboImages.InvokeRequired)
{
lboImages.Invoke((UpdateFormElements)delegate { UpdateListBox("some text", true); });
}
private void UpdateListBox(string line, bool addEmptyRow)
{
lboImages.Items.Add(line);
if (addEmptyRow)
{
lboImages.Items.Add("");
}
}
基本上我正在尝试将两个参数传递给UpdateListBox函数来测试是否在我的列表框中添加空行,但是我在标题中收到错误。我已经尝试将两个值放在一个对象[]中,但它似乎没有改变任何东西,因为我仍然得到错误。
我还是新手使用线程所以不确定我在哪里出错了。
答案 0 :(得分:2)
目前尚不清楚为什么要在这里使用匿名方法。问题是你正在创建一个带有两个参数的委托类型,但是你没有将参数(这些参数的值)传递给Invoke
。
我怀疑你只是想要:
lboImages.Invoke((UpdateFormElements) UpdateListBox, "some text", true));
使用方法组转换来创建UpdateFormElements
委托,并为其提供所需的两个参数。
或者,您可以使用lambda表达式:
MethodInvoker invoker = () => UpdateListBox(line, addEmptyRow);
lboImages.Invoke(invoker);