错误:System.InvalidOperationException:跨线程操作无效

时间:2012-12-11 18:33:53

标签: c# .net visual-studio-2010 exception

我收到异常“System.InvalidOperationException:跨线程操作无效”我怀疑控件上的数据填充来自另一个线程而不是UI。有什么理由吗?我看到调用或开始调用可以做一些好的结果,如果是这样我怎么能在我的代码中使用它?或者我们是否有其他替代机制。以下是我正在获取的痕迹

                Control control = null;
                object ancestor = Parent;

我可以在这里使用InvokeRequired,有什么想法吗?

2 个答案:

答案 0 :(得分:0)

通常,您希望使用BackgroundWorker以非阻塞方式更新UI。

这允许您运行重复或长时间运行的后台操作,该操作可以向UI线程报告,并提供需要更新的详细信息。

BeginInvoke是实现相同目的的.NET 1.1方法,但很大程度上被后台工作者取代。

如果您使用.net 4.5,也可以使用Async选项。他们可能不是一个直接的替代品。

答案 1 :(得分:-2)

只需在表单加载事件中写下这个。

CheckForIllegalCrossThreadCalls = false;

在此之后你的代码正常运行......但请记住,交叉线程应该是安全的..