gpt4 book ai didi

c# - C#跨线程操作无效,2个控件和2个单独的线程

转载 作者:行者123 更新时间:2023-12-03 12:49:49 25 4
gpt4 key购买 nike

这是我要执行的操作的简化示例:

我有2个控件MyControl cPanel pp照常在主GUI线程中创建,但是我希望c在后台线程中创建,因为它需要一段时间,而且我不想冻结GUI。如何将c添加到p.Controls?如果我在this.Invoke中执行此操作,它将引发c的异常,如果在后台线程中执行此操作,则将引发p的异常。

还是我真的不应该在GUI主线程之外创建GUI元素?

最佳答案

Or is it that I really shouldn't be creating GUI elements outside of the main GUI thread?



是的,这基本上是问题所在。大多数控件具有线程关联性,并且必须在用户界面线程中创建。

通常,处理此问题的方法是将导致控件创建缓慢的“工作”移到后台线程上,但仍在UI线程上创建控件。一旦完成缓慢的工作,您便可以使用Control.Invoke或Control.BeginInvoke来更新UI中的信息。

例如,如果要从某个外部源加载一组数据,则可以创建控件并启动后台线程以加载数据。加载数据后,您就可以更新控件以反射(reflect)它了。这将导致它在整个时间内保持响应状态。

关于c# - C#跨线程操作无效,2个控件和2个单独的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8408145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com