多线程操作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...

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

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

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

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

多线程中出现的问题

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

本文转载自:http://www.cnblogs.com/qlee/archive/2011/09/13/2174434.html 以下多线程对int型变量x的操作,哪几个需要进行同步:( ...

关于网宿厦门研发中心笔试的一道PV操作题:利用java中的多线程实现生产者与消费者的同步问题

票据为同步资源:每一时刻资源池中仅存在一张可供使用的票据public class Ticket { private int ticket=-1; synchronized public void ...

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

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

Java 多线程下race condition/同步/原子操作问题

对于同步,除了同步方法外,还可以使用同步代码块,有时候同步代码块会带来比同步方法更好的效果。 追其同步的根本的目的,是控制竞争资源的正确的访问,因此只要在访问竞争资源的时候保证同一时刻只能一个线程访...

多线程2:线程操作共享数据所引发的问题

概述: 方式1:没有操作共享数据线程类(不会存在线程安全问题) 方式2:有操作共享数据(存在线程安全问题) 方式3:有操作共享数据(不存在线程安全问题)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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