PDA

View Full Version : سوالي از InvokeRequired



l7i7l7
سه شنبه 28 اردیبهشت 1389, 19:13 عصر
به كد زير يه نگاهي بندازين...

من اطلاعاتي رو از فايل text و يا اكسل و يا ... ميخونم
و در يك گريد نمايش ميدم

در زمان خوندن اطلاعات مشكلي ندارم و برنامه درست كار ميكنه اما زماني كه ميخوام
اطلاعات رو توي گريد نمايش بدم

dataGridView1.DataSource = ds.Tables[0];

سيستم ميره تو كما ..

از backgroundWorker هم نتونستم درسا استفاده كنم چون گريد توسط يك نخ ديگر ساخته شده

حالا من چيكار كنم ؟؟؟؟
آيا روش ساده اي هست كه بتونم به گريد دسترسي داشته باشم (از يك نخ ديگه)






private void button4_Click(object sender, EventArgs e)
{

Thread th = new Thread(new ThreadStart(update1));
th.IsBackground = true;

th.Start();
}

private void update1()
{
Thread.Sleep(1000);

Update_dataGV(ds.Tables[0]);
}


delegate void Update_dataGVCallback(DataTable table);
private void Update_dataGV(DataTable table)
{
if (dataGridView1.InvokeRequired)
{
Update_dataGVCallback d = new Update_dataGVCallback(Update_dataGV);
this.Invoke(d, new object[] { table });
}
else
{
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.AutoResizeColumns();
this.Refresh();
}
}