PDA

View Full Version : کار با backgrounworker



krasus
پنج شنبه 03 بهمن 1392, 15:46 عصر
من یه سری کد ریختم تو backgrounworker که اجرا بشه که بینشون از کلاس های مختلفی استفاده میشه.:تشویق:
این وسط از یه تابع واسه آپلود فایل روی سرورم ۲ بار استفاده کردم. وقتی که اجرای کدهارو خط به خط دنبال می کنم می بینم که وقتی که به خط تابع آپلود می رسه تابع رو فراخونی می کنه و تابع هم کارش رو می کنه اما مشکل اینجاست که باید صبر کنه تا تابع ، فایل من رو آپلود کنه و آدرسش رو مشخص کنه و با اون آدرس ادامه کدهایی که توی backgrounworker ریختم اجرا بشه. اما من نمی دونم چرا این بشر(backgrounworker) کله اش رو میندازه پایینو هرچی کد و تابع و کلاسه فراخونی می کنه و منتظر جواب توابع و کلاسا نمی مونه؟:متفکر:
توابع و کلاسارو درست تعریف کردم.:تشویق:چون وقتی کدهام رو بیرون backgrounworker امتحان می کنم درست کار می کنه و کدهارو خط به خط اجرا می کنه و مثل یه بچه خوب منتظر جواب توابع من می مونه.
من چه جوری به این بشر (backgrounworker) بفهمونم که واسه جواب توابع من صبر کنه؟:عصبانی++::کف::گیج:

forodo
پنج شنبه 03 بهمن 1392, 16:02 عصر
سلام
خوب دوست عزیر شما می تونید با Thread وقفه بندازید.
ولی باز کداتون رو قرار بدید تا ببینیم چه کردید؟

krasus
پنج شنبه 03 بهمن 1392, 17:06 عصر
خوب این Thread یه زمان می خواد و اگه بخوام از روی حجم فایل و سرعت آپلود یه زمان تخمین بزنم و بهش بدم به مشکل بر می خورم. چون این سیستم مخابرات یه اینترنت به من داده که سرعت آپلود و دانلودش همیشه ثابته و حتی یه ذره ، هیچ وقت ، امکان نداره ، یعنی عمرا کم نمی شه!!!!!!!!!:قهقهه:
خوب اینم یکم از اون یه سری کد که ریختم تو backgrounworker :





// ریختن فایل و فرمت فایل انتخابی داخل بانک اطلاعاتی
MySqlConnection con = new MySqlConnection(myFunction.connectionSringForHost( ));
MySqlCommand cmdStrInsert = new MySqlCommand("INSERT INTO quiz VALUES(null, @1, @2, @3, @4, @5)", con);

cmdStrInsert.Parameters.AddWithValue("@1", d1.Text);

//اینجا باید واسه آپلود وایسه که تابع من آدرس یوآرال رو بهش بده ولی کله رو میندازه پایین و ول می کنه می ره. واسه همین تو پایگاه داده من آدرس یوآرال خالی می مونه
cmdStrInsert.Parameters.AddWithValue("@2", UploadFileToMyServer("Picture.gif"));

//اینجا باید واسه آپلود وایسه که تابع من آدرس یوآرال رو بهش بده ولی کله رو میندازه پایین و ول می کنه می ره. واسه همین تو پایگاه داده من آدرس یوآرال خالی می مونه
cmdStrInsert.Parameters.AddWithValue("@3", UploadFileToMyServer("PictureOfA.gif"));

cmdStrInsert.Parameters.AddWithValue("@4", d4.Text);
cmdStrInsert.Parameters.AddWithValue("@5", d5.Text));


con.Open();

cmdStrInsert.ExecuteNonQuery();

con.Close();

forodo
پنج شنبه 03 بهمن 1392, 17:32 عصر
اون دو خطی که می گی مشکل داره رو بیرون از عملیات بانک اطلاعاتی انجام بده و بعدش آدرسی که می گیری رو بریز توی بانک اطلاعاتی.

samsam_ninja
پنج شنبه 03 بهمن 1392, 20:27 عصر
سلام
به نظر من که اصلا بیخیال backgroudworker شو و خودت تو یه ترد کدد رو بنویس و اون تردد رو صدا بزن.
اصلا تو پروژه های حرفه ای یا بزرگ استفاده از backgroudworkerو تایمر نه توصیه میشه و نه منطقیه.
موفق باشی!