加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB / C#.net使用后台工作程序动态添加控件项

发布时间:2020-12-17 07:21:29 所属栏目:百科 来源:网络整理
导读:我正在创建一个 Windows窗体应用程序,它根据从数据库中提取的数据动态创建控件. 我在背景中运行的代码很好,它从数据库加载数据并将其应用于变量,我遇到的问题是当尝试使用这些数据创建控件时,我得到一个多线程错误(附加信息:Cross -thread operation无效:
我正在创建一个 Windows窗体应用程序,它根据从数据库中提取的数据动态创建控件.

我在背景中运行的代码很好,它从数据库加载数据并将其应用于变量,我遇到的问题是当尝试使用这些数据创建控件时,我得到一个多线程错误(附加信息:Cross -thread operation无效:控制从其创建的线程以外的线程访问的’flowpanelMenuRules’.)

我正在使用BackgroundWorker_DoWork事件,失败的代码如下:

Me.flowpanelMenuRules.Controls.Add(PanelRule(i))

之前的代码是一个简单的循环,通过变量(从数据库中提取)并收集信息.

有没有人有安全调用上述线路的经验?我似乎无法让它完全工作:(

感谢您的帮助,如果需要,我可以发布更多代码.

解决方法

我的建议是让BackgroundWorker只创建控件,但不要将它们添加到表单中.而是通过RunWorkerCompleted事件将准备好的控件返回到调用/ UI线程.然后在此时将控件添加到表单中,可能与SuspendLayout()/ ResumeLayout()方法一起使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读