ببخشید مثال یادم رفت(ویرایش نکردم چون گفتم شاید نبینید)....
دو کد زیر رو امتحان کنید و تفاوتش رو ببینید...
private void button1_Click(object sender, EventArgs e)
{
t = new Thread(new ThreadStart(temp));
t.Start();
}
private void temp()
{
myDel del = new myDel(main);
for (int i = 0; i < 10; i++)
{
this.Invoke(del);
Thread.Sleep(1000);
}
}
private void main()
{
listBox1.Items.Add("sa");
}
private void button2_Click(object sender, EventArgs e)
{
t = new Thread(new ThreadStart(tmp));
t.Start();
}
private void tmp()
{
if (listBox2.InvokeRequired)
{
myDel del = new myDel(tmp);
this.Invoke(del);
}
else
{
for (int i = 0; i < 10; i++)
{
listBox2.Items.Add("sa");
Thread.Sleep(1000);
}
}
}