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

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

msdn上如下解释:

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

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

传送门在此

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

Delphi中多线程用Synchronize实现VCL数据同步显示 解决在线程中操作控件出现问题

当您使用的类层次结构的对象如TThread,其属性和方法都不能保证是线程安全的。也就是说,直接访问其他窗体属性或执行方法,则使用的内存不从受其他线程的保护。正因为如此,一个主线程是预留访问VCL和CL...

多线程 DLL 回调函数问题,当应用程序退出时,有些操作并未完成,造成程序内存泄露,如何解决呢

问题描述如下:  现在有一个DLL库,里面定义了一个线程,线程里面又调用了应用程序中定义的回调函数,这样当应用程序退出时,应用程序中的回调函数还没有执行完毕,停在中间了,造成程序内存泄露,Debug内...

多线程对同一个类操作时注意的问题

今天看到一段很有意思的小程序,讲述了线程之间调用同一个类属性的例子: 线程1: public class MyThreadClass1 implements Runnable { public...

iOS开发--iOS多线程操作时一些要注意的安全问题

这次STMAssembleViewhttps://github.com/ming1016/STMAssembleView加入异步解析上线后发现一些线程安全方面的问题,现总结下。 先看看这段代码 ...

多线程中出现的问题

  • 2012年11月30日 11:58
  • 3KB
  • 下载

Qt 多线程与数据库操作需要注意的几点问题

Qt的数据库操作自成一派,相对于复杂的 ADO \ODBC\DAO\OLEDB 等传统 C++ 访问数据库的方法,还是很先进的,充分体现了 OO 的理念。对数据库的封装,想法是很有意思的。设计者把进程...

多线程环境下对变量的读写操作的原子性问题

以下多线程对int型变量x的操作,哪几个需要进行同步:( ) A. x=y; B. x++; C. ++x; D. x=1; 从表面看上去实在是看不出什么突破口,我们不妨将这些代码译成汇编语言...

sqlite多线程操作注意问题

1. sqlite数据库使用面临的问题:多线程同时访问       Thread A和Thread B 同时创建SQLiteDatabas,来操作数据库(主要是insert操作):       下...

Qt 多线程与数据库操作需要注意的几点问题

彻底抛弃MFC, 全面应用Qt 已经不少时间了。除了自己看书按步就班做了十几个验证性的应用,还正式做了3个比较大的行业应用,总体感觉很好。Native C++ 下, Qt 基本是我用过的最简便的界面库...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多线程操作GridView时出现索引被破坏的问题
举报原因:
原因补充:

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