backgroundWorker 跨进程创建控件?
在主进程 页面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) 不加的话肯定会报错,但是加了就等于饶了一圈还是要到主进程