下面的代码块导致错误:用户代码未处理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],
}
);
}
}
有什么想法吗?
答案 0 :(得分:26)
由于数组协方差而发生错误;字符串数组可分配给object[]
。这会导致Invoke
方法将string
数组的每个元素视为AddListViewItem
方法的参数。
这是一个修复:
Invoke(new Action<string[]>(AddListViewItem), new object[] {Data});
(或)
Invoke(new Action<string[]>(AddListViewItem), (object)Data);
这使Invoke
清楚地表明目标方法采用单参数。
答案 1 :(得分:0)
更新信息:
如果您使用的是 Windows Server 2008 R2 ,请查看 .Net Framework 4.5.1 的Windows更新,了解基于Windows Server 2008 R2 x64的系统KB2858725 即可。对我来说,安装此更新后修复了这个问题。