PDA

View Full Version : سوال: مشکل در استفاده از BackGround Worker



zidanerfan
سه شنبه 17 دی 1392, 22:00 عصر
سلام , میخوام برای جلوگیری از هنگ کردن برنامه از BGW استفاده کنم ولی نمیدونم چطوری ازش استفاده کنم قبلاً که اطلاعات مورد نظرو متنی بود راحت یه متغییر رشته میساختم و اطلاعات رو از Bgw میگرفتم اما الان مثلاً تو مثال زیر نمی دونم چطوری اطلاعات رو به گرید بدم :



BackgroundWorker bgwUPDATE = new BackgroundWorker();
private void backgroundWorkerUPDATE_DoWork(object sender, DoWorkEventArgs e)
{
try
{
MySqlCommand myCommand = new MySqlCommand("UPDATE Test SET Name='Ali'" , conn);
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
conn.Close();

MySqlDataAdapter Myda = new MySqlDataAdapter("SELECT * FROM Test", conn);
DataSet DS = new DataSet();
Myda.Fill(DS);
e.Result=DS.Tables[0];
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
MessageBox.Show(ex.Message);
}
}

private void backgroundWorkerUPDATE_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
try
{

dataGridView1.DataSource = e.Result;
}
catch
{
}
}

private void BtnEditHover_MouseClick(object sender, MouseEventArgs e)
{
bgwUPDATE.DoWork += new DoWorkEventHandler(backgroundWorkerUPDATE_DoWork);
bgwUPDATE.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorkerUPD ATE_RunWorkerCompleted);
bgwUPDATE.WorkerReportsProgress = true;
bgwUPDATE.RunWorkerAsync();
}


ممنون میشم راهنمایی کنید !

zidanerfan
سه شنبه 17 دی 1392, 23:24 عصر
کسی نیست جواب بده

arash21hhhh
چهارشنبه 18 دی 1392, 08:31 صبح
سلام . اگه منظورتو درست فهمیده باشم نباید مشکلی باشه :چشمک:
اول CheckForIllegalCrossThreadCalls = False رو تو بک گراند ورکر قرار بده . بعد هم datagridview.datasource=dt و . .. .

zidanerfan
چهارشنبه 18 دی 1392, 09:14 صبح
سلام , ممنون که جواب دادی میشه اینو تو کد من ست کنید ؟ می کد شمارو ست کردم کار نکرد

zidanerfan
چهارشنبه 18 دی 1392, 09:18 صبح
ارور میده !
Object reference not set to an instance of an object.

zidanerfan
چهارشنبه 18 دی 1392, 09:56 صبح
ممنون از راهنماییت آقای arash21hhhh (http://barnamenevis.org/member.php?267178-arash21hhhh) , درست شد فقط گاهی ارور میده
Object reference not set to an instance of an object.
علتش چیه دوستان ؟

zidanerfan
چهارشنبه 18 دی 1392, 11:24 صبح
کسی نیست کمک کنه ؟؟؟

arash21hhhh
چهارشنبه 18 دی 1392, 13:12 عصر
:قهقهه: ماشالا سرعت پست دهیت عالیه . این خطا دلایل مختلفی داره .
ولی خب واسه اینکه دقیق بفهمی کدوم قسمت کد خطا میده میتونی try-catch رو برداری تا موقع خطا برنامه دقیقا جای خطا توقف کنه و خطا رو بفهمی .
یا از e استفاده نکن . دیتا تیبلو عمومی تعریف کن . بعد مستقیم به دیتاگرید وصلش کن