首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

多线程中修改listview的SubItem,该怎么解决

2012-01-21 
多线程中修改listview的SubItem下面循环是在一个子线程中运行for (int i 0 i ListView1.Items.Count

多线程中修改listview的SubItem
下面循环是在一个子线程中运行
for (int i = 0; i < ListView1.Items.Count; i++)
{
 ListView1.Items[i].SubItems[0].Text= i.ToString();//修改

}
把上面修改的代码放在一委托中也不行,提示:
InvalidArgument=Value of '2' is not valid for 'index'.
Parameter name: index

private delegate void ChangeListViewHandler(int n);
private void ChangeListView(int n)
  {
  if (ListView1.InvokeRequired)
  {

  ListView1.Invoke(new ChangeListViewHandler(ChangeListView), new object[] { n});
  }
  else
  {
  ListView1.Items[n].SubItems[0].Text = n.ToString();
  }
  }



[解决办法]
如果是多线程而且下面循环是在一个子线程中运行,我觉得应该
object o=new object();
lock(o){
for (int i = 0; i < ListView1.Items.Count; i++)
{
ListView1.Items[i].SubItems[0].Text= i.ToString();//修改


}

[解决办法]
看看你的n是几,感觉是你的索引问题~~~
[解决办法]
从你的代码来看你的那个循环代码没有必要放在线程中吧

热点排行