参数计数与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.1的Windows Update 。 对我来说,安装此更新后修复了此问题。