esagraphic
دوشنبه 16 شهریور 1394, 12:56 عصر
سلام به همه دوستان من تو برنامه ام زمانی که لود میشه یه سری کد های دارم که از اون جمله یکی اینه که اطلاعات دیتابیس خونده میشه به دیتا گرید ریخته میشه اونم تنها 100 عددش بعدا متوجه شدم برنامه ام برای اولین بار که لود میشه برای ده ثانیه هنگ میکنه متوجه شدم که مشکل از دیتاگرید است که اطلاعات را بایند میکنه کدش اینه
public void Form1_Load(object sender, EventArgs e)
{
fildatagridview();
timer2.Enabled = true;
openport();
outdortype = Properties.Settings.Default.outdortype;
}
بعد تو برنامه یک فنکشن دارم که اطلاعات را میخونه اینطوری
public void fildatagridview()
{
dataGridView1.RowsDefaultCellStyle.BackColor = Color.Khaki;
dataGridView1.AlternatingRowsDefaultCellStyle.Back Color = Color.LemonChiffon;
SqlConnection c = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\haic.mdf;Integrated Security=True;Connect Timeout=30");
SqlDataAdapter a = new SqlDataAdapter(" Select id AS [ردیف] , TruckNo As[نمبر موتر] , Weightfull as [وزن پر] , WeightEmpy as [وزن خالی] , Netweight as [وزن خالص] , Goods as [نوع کالا] , Customername as [مشتری] , Barnama as [شماره بارنامه] , origin as [مبدا] , Destination as [مقصد] , Trucktype as [نام موتر], operator as [اپراتور] , datefull as [تاریخ و ساعت پر] , dateempy as [تاریخ و ساعت خالی] ,datefullmiladi as [تاریخ پر میلادی] ,weighttype as [نوع وزن گیری] , towzintype as [نوع توزین] from Weight order by id desc", c);
DataTable t = new DataTable();
a.Fill(t);
dataGridView1.DataSource = t;
}
بعد اومدم اون Filldatagirdview را توسط یک ترید صدا زدم که بقیه زود تر اجرا بشه اینجوری
public void Form1_Load(object sender, EventArgs e)
{
Thread fill = new Thread(fildatagridview);
fill.Start();
timer2.Enabled = true;
openport();
outdortype = Properties.Settings.Default.outdortype;
}
اما زمانی که ترید اجرا میشه در قسمت
a.Fill(t); این ایرور را میده
Cross-thread operation not valid: Control 'dataGridView1' accessed from a thread other than the thread it was created on.
نفهمیدم مشکلش چیه منتظر پاسخ تان هستم تشکر
public void Form1_Load(object sender, EventArgs e)
{
fildatagridview();
timer2.Enabled = true;
openport();
outdortype = Properties.Settings.Default.outdortype;
}
بعد تو برنامه یک فنکشن دارم که اطلاعات را میخونه اینطوری
public void fildatagridview()
{
dataGridView1.RowsDefaultCellStyle.BackColor = Color.Khaki;
dataGridView1.AlternatingRowsDefaultCellStyle.Back Color = Color.LemonChiffon;
SqlConnection c = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\haic.mdf;Integrated Security=True;Connect Timeout=30");
SqlDataAdapter a = new SqlDataAdapter(" Select id AS [ردیف] , TruckNo As[نمبر موتر] , Weightfull as [وزن پر] , WeightEmpy as [وزن خالی] , Netweight as [وزن خالص] , Goods as [نوع کالا] , Customername as [مشتری] , Barnama as [شماره بارنامه] , origin as [مبدا] , Destination as [مقصد] , Trucktype as [نام موتر], operator as [اپراتور] , datefull as [تاریخ و ساعت پر] , dateempy as [تاریخ و ساعت خالی] ,datefullmiladi as [تاریخ پر میلادی] ,weighttype as [نوع وزن گیری] , towzintype as [نوع توزین] from Weight order by id desc", c);
DataTable t = new DataTable();
a.Fill(t);
dataGridView1.DataSource = t;
}
بعد اومدم اون Filldatagirdview را توسط یک ترید صدا زدم که بقیه زود تر اجرا بشه اینجوری
public void Form1_Load(object sender, EventArgs e)
{
Thread fill = new Thread(fildatagridview);
fill.Start();
timer2.Enabled = true;
openport();
outdortype = Properties.Settings.Default.outdortype;
}
اما زمانی که ترید اجرا میشه در قسمت
a.Fill(t); این ایرور را میده
Cross-thread operation not valid: Control 'dataGridView1' accessed from a thread other than the thread it was created on.
نفهمیدم مشکلش چیه منتظر پاسخ تان هستم تشکر