[英]async task - System.InvalidOperationException - Invalid cross-thread operation
[英]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.