繁体   English   中英

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

[英]Error :System.InvalidOperationException: Cross-thread operation not valid

我收到异常“ System.InvalidOperationException:跨线程操作无效”,我怀疑控件上的数据填充来自其他线程而不是UI。 有什么原因吗? 我看到invoke或begin invoke可以取得良好的效果,如果可以的话,如何在代码中利用它呢? 还是我们有其他替代机制。以下是我正在获取的跟踪信息

                Control control = null;
                object ancestor = Parent;

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

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

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

BeginInvoke是实现同一目标的.NET 1.1方法,但在很大程度上已被后台工作人员取代。

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

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

CheckForIllegalCrossThreadCalls = false;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM