zoukankan      html  css  js  c++  java
  • DataGridView多线程更新数据的问题的解决办法

    我通过INotifyPropertyChanged接口让DataGridView自动更新显示内容,但在多线程更新的时候,却发生了妙名其妙的问题,DataGridView居然抛出了这样一个异常:BindingSource 不能是自己的数据源。请不要将 DataSource 和 DataMember 属性设置为循环引用 BindingSource 的值。

    真的是很莫名其妙,试了几次,不管有1条线程还是10条线程,只要不是在主线程上更新属性的值,就会随机地引发这个异常。注意,是随机引发的,也就是说并不是每一次更新都会有问题,而且引发异常的概率很低。 

    本相用ILSpy去看个究竟,但实在懒得动手,就去问了问谷歌,倒是得到了一个解决办法,但原因还没找到。算了,能用就可以了。

    其实很简单,大家一定都知道,其实我也知道,就是用Control.InvokeRequired去检查是否跨线程,然后用Invoke或BeginInvoke去更新控件,但因为要更新的属性比较多,本来想偷个懒,结果还是要我用这样的办法来解决。

    问题是解决了,但原因还没有找到,不知道DataGridView凭什么认为是不是自己的数据源,这个问题到底是怎么产生的,我脑子里有一串问号,等哪天实在闲得慌的时候再去研究吧。 

  • 相关阅读:
    存储器多级结构
    649. Dota2 参议院
    pycharm安装第三方库失败
    python -m pip install --upgrade pip升级失败
    P1149 火柴棒等式
    HTTP详解
    ref与out
    EF查询数据库框架的搭建
    EF查询数据库框架的搭建
    css清除浮动
  • 原文地址:https://www.cnblogs.com/effun/p/2691151.html
Copyright © 2011-2022 走看看