我有一个绑定到BindingSource的BindingList<>列表,而BindingSource又绑定到DataGridView的DataSource属性上。
1. 我了解到,对列表中的任何添加操作都会触发ListChanged事件,然后通过BindingSource传播到DataGridView,后者将更新自身以显示更改。这是因为事件已经自动连接了。(是吗?)
当所有工作都在UI线程上完成时,这一切都很好,但当该列表被非UI线程创建和更改时,最终会出现跨线程异常,当网格更新时会发生。我可以理解为什么会发生这种情况,但不知道如何解决...
2. 我很难理解的是,在哪里能够最好地截取ListChanged事件,以尝试将其调度到UI线程上?我猜想我需要某种方式引用UI线程来帮助执行此操作?
我已经阅读了许多关于此事的文章/帖子,但由于我不完全了解这里所涉及的机制,因此感到困难。
一旦它们在列表中,我将永远不会更改任何项目,只会添加它们,并最初清除列表。
(我正在使用.NET 2.0)