错误:系统无效操作异常:跨线程操作无效



我收到异常"System.InvalidOperationException:跨线程操作无效"我怀疑控件上的数据填充来自另一个线程而不是 UI。有什么原因吗?我看到调用或开始调用可以做一些好的结果,如果是这样,我如何在我的代码中使用它?或者我们是否有任何其他替代机制。以下是我得到的跟踪

                Control control = null;
                object ancestor = Parent;

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

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

这允许你运行重复或长时间运行的后台操作,该操作可以向 UI 线程报告,其中包含需要更新的内容的详细信息。

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

如果您使用的是 .net 4.5,则还可以使用异步选项。它们可能不是足够直接的替代品。

只需将其写在您的表单加载事件中即可。

CheckForIllegalCrossThreadCalls =false;

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

最新更新