多线程操作GridView时出现索引被破坏的问题

原创 2012年03月22日 09:41:13

msdn上如下解释:

volatile 关键字用于通知编译器,将有多个线程访问 _shouldStop 数据成员,因此它不应当对此成员的状态做任何优化假设。有关更多信息,请参见volatile(C# 参考)

通过将 volatile 与 _shouldStop 数据成员一起使用,可以从多个线程安全地访问此成员,而不需要使用正式的线程同步技术,但这仅仅是因为 _shouldStop 是 bool。这意味着只需要执行单个原子操作就能修改 _shouldStop。但是,如果此数据成员是类、结构或数组,那么,从多个线程访问它可能会导致间歇的数据损坏。假设有一个更改数组中的值的线程。Windows 会定期中断线程,以便允许其他线程执行。因此,此线程会在分配某些数组元素之后和分配其他元素之前被停止。由于数组现在有了一个程序员从不想要的状态,因此,读取此数组的另一个线程可能会失败。

传送门在此

内部索引已损坏异常的解决方法
本人的解决方法是直接lock(datatable),哈哈是不是有点暴力?恩,其实你可以只锁定其中需要的那一行,也是可行的.

C#网络编程之多线程socket实例

服务器端:using System; using System.Collections.Generic; using System.Linq; using System.Text; u...
  • chongshangyunxiao321
  • chongshangyunxiao321
  • 2016年03月27日 21:55
  • 2347

开启子线程设置GridVIew数据源

老办法:声明委托 public delegate void SetDgValueEventHandler(DataGridView cc, object obj); private void SetD...
  • liushengpiaoxu
  • liushengpiaoxu
  • 2010年10月29日 16:58
  • 601

DataTable 内部索引已损坏:“13”

今天写程序遇见一个错误,错误是 “DataTable 内部索引已损坏:“13””。 程序是在一个线程里不停的对绑定在gridcontrol上的datatable进行添加行操作,运行一段时间就出错。 在...
  • g394594141
  • g394594141
  • 2010年06月08日 11:22
  • 2979

搞定“异常消息: DataTable 内部索引已损坏”

一般我们会使用DataTable.Select()方法来筛选数据,而DataTable会在执行Select()方法的时候系统会默认创建一个DataView,而DataView创建的时候会创建内部索引,...
  • prosurfer
  • prosurfer
  • 2008年01月08日 15:37
  • 1159

在数据表(DataTable)中操作数据

在 DataSet 中创建 DataTable 之后,您执行的活动可以与使用数据库中的表时执行的活动相同。您可以添加、查看、编辑和删除表中的数据;可以监视错误和事件;并且可以查询表中的数据。在修改 D...
  • cui55
  • cui55
  • 2006年11月07日 16:15
  • 7205

一个mysql表索引被破坏的问题及解决

下午上班,惊闻我的dedecms的网站出问题了,访问一看,果然全屏报错,检查mysql日志,错误信息为: Table ./dedecmsv4/dede_archives is marked as cr...
  • expendable
  • expendable
  • 2007年05月31日 16:41
  • 1951

如何在堆栈被破坏的情况下解决宕机问题

宕机不用怕,原来这样哒! 通常在生产环境下如果遇到宕机,我们的做法很简单gdb调试core文件,可以看到程序的堆栈信息,就可以定位问题,解决问题。 但是在某些情况下,堆栈信息由于某些原因被损坏了,...
  • wangchong_fly
  • wangchong_fly
  • 2016年01月08日 13:42
  • 1076

RAR文件解压缩时系统提示“CRC校验失败,文件被破坏”,修复损坏文件的办法!

办法一:WinRAR本身就带有压缩包修复功能。点击菜单“工具”下的“修复压缩文件”即可,快捷键是“ALT+R”。此法可修复一部分压缩包 的常规错误,但是成功率不高。你可以试着连续修复几次。WinRAR...
  • taotaost
  • taotaost
  • 2014年02月16日 17:01
  • 3513

ASP.NET中gridview获取当前行的索引值

ASP.NET gridview获取当前行的索引值 在用GridView控件时,我们经常会碰到获取当前行的索引,通过索引进行许多操作。例如,可以获得当前行某一个控件元素;设置某一元素的值等等...
  • zhang399401
  • zhang399401
  • 2012年03月04日 18:59
  • 4858

ListView/GridView嵌套CheckBox滑动时CheckBox选中状态显示错乱

在讨论这个问题之前应该先了解ListView的复用机制  ListView复用的原理:ListView中的每一个Item显示都需要Adapter调用一次getView的方法,这个方法会传入一个con...
  • qq_30219217
  • qq_30219217
  • 2017年12月12日 16:13
  • 92
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多线程操作GridView时出现索引被破坏的问题
举报原因:
原因补充:

(最多只允许输入30个字)