PDA

View Full Version : مشکل کوچک با backgroundworker و timer



behzadk
سه شنبه 09 شهریور 1389, 19:37 عصر
با سلام
من می خوام در برنامه خودم یک کاری در پشت زمینه اجرا بشه و برای اون کار از backgrounworker استفاده کردم و چوان ایم کار باید به صورت ریتمیک انجام بشه کار مورد نظر را در یک timer نوشتم به علت اینکه در هر 1 دقیقه باید ایم کار انجام بشه و وقتی در dowork خصوصیت enable timer را true می کنم timer_tick اجرا نمی شود به نظر شما مشکل کار در کجاست و راه دیگری برای این کار که بهینه باشد موجود است یا نه ؟
با تشکر از دوستان

Rejnev
سه شنبه 09 شهریور 1389, 20:04 عصر
Thread t=new Thread(doWork);
t.Sart();
//----------
doWork()
{
while(true){
//doSomthing
//becareful about cross threading problems
Thread.Sleep(10000);
}
}


یک ترد ایجاد میشه و کارها رو انجام میده و به خواب میره و بیدار میشه و دوباره کارها رو انجام میده

ostovarit
سه شنبه 09 شهریور 1389, 23:01 عصر
با سلام
من می خوام در برنامه خودم یک کاری در پشت زمینه اجرا بشه و برای اون کار از backgrounworker استفاده کردم و چوان ایم کار باید به صورت ریتمیک انجام بشه کار مورد نظر را در یک timer نوشتم به علت اینکه در هر 1 دقیقه باید ایم کار انجام بشه و وقتی در dowork خصوصیت enable timer را true می کنم timer_tick اجرا نمی شود به نظر شما مشکل کار در کجاست و راه دیگری برای این کار که بهینه باشد موجود است یا نه ؟
با تشکر از دوستان

اول روی backgrounworker کلیک کنید و پراپرتیWorkerReportProgress را برابر true قرار بدید بعد در ایونت DoWork خط زیر رو اضافه کنید :



backgroundWorker1.ReportProgress(1);
.
.
.


و در ایونت backgroundWorker1_ProgressChanged تایمر رو راه بندازید ...:



timer1.Enabled = true;


حالا در timer1_Tick کد مربوط به عملیاتتون رو بنویسد ...
موفق باشید