下面的代码块导致错误:用户代码未处理 TargetParameterCountException。参数计数不匹配。
public void AddListViewItem(string[] Data)
{
if (InvokeRequired)
{
Invoke(new Action<string[]>(AddListViewItem), Data);
}
else
{
ListViewData.Items.Add(Data[0]).SubItems.AddRange
(
new string[]
{
Data[1],
Data[2],
Data[3],
}
);
}
}
有什么想法吗?
最佳答案
错误是由于数组协方差引起的;字符串数组可分配给 object[]
。这会导致 Invoke
方法将 string
数组的每个元素视为 AddListViewItem
方法的参数。
这是一个修复:
Invoke(new Action<string[]>(AddListViewItem), new object[] {Data});
(或)
Invoke(new Action<string[]>(AddListViewItem), (object)Data);
这使得 Invoke
清楚地知道目标方法采用单个参数。
关于c# - 参数计数与 Invoke 不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3721782/