backgroundWorker 跨进程创建控件?

weixin_38058428 2017-01-09 12:56:34
在主进程 页面load的时候创建了100个pannel 控件pn1_pn100,每个pannel里面要放200个textbox 和 PictureBox,但是页面可能会被卡主,进程缓慢,但是使用后台处理后面的增加事件时,backgroundWorker 提示不能跨进程处理 然后在后台创建完后添加到pannel 里的时候还要委托给主进程处理 但是这样的处理结果好像之比没加后台处理快一点点,但是还是很卡  ,有没有跨进程创建修改控件的方法?
Pannel[] pn; Textbox[] tb; PictureBox[] pb; private void Form_Load(object sender, EventArgs e) { pn= new Pannel[100]; for(int i=0;i<100;i++) { pn[i] = new pannel(); pn[i].name="pn"+i; Form.Controls.Add(pn[i]); } backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { if(int i=0,i<100,i++) { tb=new Textbox(200); pb=new PictureBox(200); if(int j=0;j<200;j++) { tb[j]=new Textbox(); tb.name="tb"+[j]; pb[j]=new PictureBox(); pb.name="pb"+[j]; if (this.InvokeRequired) { this.Invoke(new MethodInvoker(delegate { backgroundWorker1_DoWork(sender, e); })); return; } pn[i].Controls.Add(tb[j]); pn[i].Controls.Add(pb[j]); } } }


if (this.InvokeRequired) 不加的话肯定会报错,但是加了就等于饶了一圈还是要到主进程
...全文
16 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧