当前窗体上有一datagrid1,绑定表为dataset1.tables["test"],
新起线程执行的操作
ThreadProc()
{
for(int i = 0;i<tables["test"].rows.count;i++)
{
this.dataset1.tables["test"].rows.removeat(0);
}
}
当我
Thread t = new Thread(new ThreadStart(ThreadProc));
t.Start();   
之后,就会出现 错误,:
未处理的“System.IndexOutOfRangeException”类型的异常出现在 system.windows.forms.dll 中。其他信息: 索引 3 处没有值。假如当前dataset1.tables["test"] 有4条记录,就报索引 3 处没有值,2条就报索引 1 处没有值

解决方案 »

  1.   

    this.dataset1.tables["test"].rows.removeat(0);这里是删除掉一行吗?removeat(0):(0)
      

  2.   

    建议你从后往前删除,防止前面删除后,Table未更新引发错误;
    for(int i = tables["test"].rows.count-1;i>=0;i--)
    {
    this.dataset1.tables["test"].rows.removeat(i);
    }
      

  3.   

    不是建议 而是应该从后面开始删除如lz的代码 删除第0条后 当前rowIndex会重排列 因此 原本index=1的数据删除不掉 以此类推
      

  4.   

    但是需求就是要从第一条删除啊,
    ThreadProc()里具体为,执行当前列表任务,按顺序执行,如果成功,删除记录,如果失败,就保留任务记录,
    按各位说的从最后删除,那我发送任务的顺序不是也要颠倒了?