我收到异常“System.InvalidOperationException:跨线程操作无效”我怀疑控件上的数据填充来自另一个线程而不是UI。有什么理由吗?我看到调用或开始调用可以做一些好的结果,如果是这样我怎么能在我的代码中使用它?或者我们是否有其他替代机制。以下是我正在获取的痕迹
Control control = null;
object ancestor = Parent;
我可以在这里使用InvokeRequired,有什么想法吗?
答案 0 :(得分:0)
通常,您希望使用BackgroundWorker以非阻塞方式更新UI。
这允许您运行重复或长时间运行的后台操作,该操作可以向UI线程报告,并提供需要更新的详细信息。
BeginInvoke是实现相同目的的.NET 1.1方法,但很大程度上被后台工作者取代。
如果您使用.net 4.5,也可以使用Async选项。他们可能不是一个直接的替代品。
答案 1 :(得分:-2)
只需在表单加载事件中写下这个。
CheckForIllegalCrossThreadCalls = false;
在此之后你的代码正常运行......但请记住,交叉线程应该是安全的..