参数计数与Invoke不匹配?

下面的代码块导致错误:TargetParameterCountException未被用户代码处理。 参数计数不匹配。

public void AddListViewItem(string[] Data) { if (InvokeRequired) { Invoke(new Action(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(AddListViewItem), new object[] {Data}); 

(要么)

 Invoke(new Action(AddListViewItem), (object)Data); 

这使得Invoke目标方法采用单个参数变得非常清楚。

更新资料:

如果您使用的是Windows Server 2008 R2 ,请查看适用于基于Windows Server 2008 R2 x64的系统KB2858725的 .Net Framework 4.5.1Windows Update 。 对我来说,安装此更新后修复了此问题。