pouria_bayat
چهارشنبه 15 خرداد 1392, 14:11 عصر
با سلام خدمت همه عزیزان.
من میخواهم یک برنامه بنویسم که توی یک حلقه 10 تایی با استفاده از ترد و فرم لود 10 تا Panel به یک tabcontrol اضافه بشه اما برنامه ارور میده شکل کلی برنامه به صورت زیر هستش:
void SystemSearch()
{
for(int i=0;i<10;i++)
{
runadding();
}
}
void runadding()
{
Button cb = new Button();
cb.Text = "salam";
Panel newpanel = new Panel();
newpanel.Controls.Add(cb);
cb.Show();
newpanel.Parent = TabPageN;
TabPageN.SuspendLayout();
newpanel.Width = 50;
newpanel.Height = 50;
newpanel.BackColor = System.Drawing.Color.Blue;
TabPageN.Controls.Add(newpanel);
newpanel.Show();
TabPageN.ResumeLayout();
}
و در قسمت فرم لود:
this.Search = new Thread(SystemSearch);
this.Search.Start();
ممنون میشم راهنمایی کنید البته مشگل کار من زمانی هستش که runadding شروع به کار میکنه و ارور مربوطه اینطوری هستش:
System.InvalidOperationException: Cross-thread operation not valid:
Control 'TabPageN' accessed from a thread other the thread it was created on.
من میخواهم یک برنامه بنویسم که توی یک حلقه 10 تایی با استفاده از ترد و فرم لود 10 تا Panel به یک tabcontrol اضافه بشه اما برنامه ارور میده شکل کلی برنامه به صورت زیر هستش:
void SystemSearch()
{
for(int i=0;i<10;i++)
{
runadding();
}
}
void runadding()
{
Button cb = new Button();
cb.Text = "salam";
Panel newpanel = new Panel();
newpanel.Controls.Add(cb);
cb.Show();
newpanel.Parent = TabPageN;
TabPageN.SuspendLayout();
newpanel.Width = 50;
newpanel.Height = 50;
newpanel.BackColor = System.Drawing.Color.Blue;
TabPageN.Controls.Add(newpanel);
newpanel.Show();
TabPageN.ResumeLayout();
}
و در قسمت فرم لود:
this.Search = new Thread(SystemSearch);
this.Search.Start();
ممنون میشم راهنمایی کنید البته مشگل کار من زمانی هستش که runadding شروع به کار میکنه و ارور مربوطه اینطوری هستش:
System.InvalidOperationException: Cross-thread operation not valid:
Control 'TabPageN' accessed from a thread other the thread it was created on.