一个控件只能被创建它的线程访问——这点我知道。
以下是需要翻译的内容:
请注意,被违反控件的名称 为空...我认为如果更新 BindingList<> 存在问题,无论在环境中还是不在环境中都不会有影响。尽管如此,这就是我所看到的。 此外,即使抛出异常,.Add() 也能成功完成!! 显然,在我的生产环境中这不是什么大问题(还没有?),因为它只在 Studio 中发生; 而且,是的,我可以调用 GUI 线程来执行 Add,或者将 Adds 存储在一个地方供 GUI 线程以后检索... 我不是在寻找解决方法,而是更想知道这个问题的答案: 为什么错误只出现在 studio 中呢?
以下是需要翻译的内容:
- 我有一个使用BindingList<>作为数据源的DataGridView。
- 我有一个非GUI工作线程,运行一些复杂的计算/比较等操作,然后将对象添加/编辑到BindingList<>中。
- 定时器会刷新GUI线程与BindingList<>之间的数据。
这段代码在非环境模式下运行完美无缺。但在环境模式下,当调用BindingList<>的Add()方法时,就会出现下面这个错误:
An Exception has occurred
EXCEPTION : Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on.
IN METHOD : get_Handle
AT LINE : 0
CLASS : System.Windows.Forms.Control
请注意,被违反控件的名称 为空...我认为如果更新 BindingList<> 存在问题,无论在环境中还是不在环境中都不会有影响。尽管如此,这就是我所看到的。 此外,即使抛出异常,.Add() 也能成功完成!! 显然,在我的生产环境中这不是什么大问题(还没有?),因为它只在 Studio 中发生; 而且,是的,我可以调用 GUI 线程来执行 Add,或者将 Adds 存储在一个地方供 GUI 线程以后检索... 我不是在寻找解决方法,而是更想知道这个问题的答案: 为什么错误只出现在 studio 中呢?