soo*_*ise 14 c# parameters delegates invoke winforms
下面的代码块导致错误:用户代码未处理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],
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Ani*_*Ani 26
由于数组协方差而发生错误; 一个字符串数组可分配给object[].这会导致该Invoke方法将string数组的每个元素视为该AddListViewItem方法的参数.
这是一个修复:
Invoke(new Action<string[]>(AddListViewItem), new object[] {Data});
Run Code Online (Sandbox Code Playgroud)
(要么)
Invoke(new Action<string[]>(AddListViewItem), (object)Data);
Run Code Online (Sandbox Code Playgroud)
这使得Invoke目标方法采用单个参数非常清楚.
| 归档时间: |
|
| 查看次数: |
20463 次 |
| 最近记录: |