• DataGridView多线程更新数据的问题的解决办法


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

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

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

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

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

  • 相关阅读:
    Path Sum
    Binary Tree Level Order Traversal II
    Jump Game
    leedcode 刷题-V2
    (2016 年) githup 博客地址 : https://github.com/JMWY/MyBlog
    算法分类总结
    剑指 Offer 题目汇总索引
    LeedCde 题解目录
    趣味算法总目录
    常用
  • 原文地址:https://www.cnblogs.com/effun/p/2691151.html
Copyright © 2020-2023  润新知