واضح آرشیو وب فارسی:سایت ریسک: View Full Version : مختصری درباره BackgroundWorker B O L O T02-08-2007, 02:13 PMBackgroundWorker محسوس تر و بصری تر کردن کلاس thread است.یک پروسه زمان بر را به آن میدهیم و BackgroundWorker آن را اصطلاحا در پشت (رابط کاربری و کاربر شما) تا پایان انجام میدهد در حالی که کاربر میتواند در طول این مدت پروسهای دیگر خود را انجام دهد. BackgroundWorker1.RunWorkerAsync(100): این متد رویداد DoWork را صدا میزند پارامتر آن اختیاری و از نوع object است که در رویداد DoWork توسط متد e.Argument قابل بازیابی است. BackgroundWorker1.DoWork: کدهای مربوط به پروسه خود را (مثل لود تعداد زیادی رکورد) در این رویداد قراردهید. BackgroundWorker1.RunWorkerCompleted: وقتی کل پروسه پایان پذیرفت این رویداد صدا زده میشود. backgroundWorker1.IsBusy: مادامیکه پروسه در حال انجام است و رویداد RunWorkerCompleted صدا زده نشده این خصوصیت مقدار True دارد BackgroundWorker.ReportProgress(int32): برای استفاده از این متد ابتدا خصوصیت WorkerReportsProgress رابرابر true قراردهید. این متد رویداد BackgroundWorker.ProgressChanged را صدا میزند و پارامتر خود را در متد e. ProgressPercentage رویداد فوق تحویل میدهد. BackgroundWorker.ProgressChanged: به راحتی میتوانید در این رویداد پروگرس بار خود را مقداردهی کنید. و کاربر را از روند کار آگاه کنید. BackgroundWorker.CancelAsync: برای استفاده از این متد ابتدا خصوصیت WorkerSupportsCancellation رابرابر true قراردهید. این متد باعث کنسل شدن کل پروسه میشود. و خصوصیت BackgroundWorker.CancellationPending را True میکند البته مشخص است که خروجی پروسه تا فراخوانی این متد در اختیار کاربر است. BackgroundWorker.CancellationPending: بهتر است در طول پروسه مقدار این خصوصیت مرتبا چک شود. Shahrdar02-08-2007, 07:09 PMسلام ممنون از آموزشه خوبت من يه مشکل دارم تويه cancel کردن من اينکارو به سرته زير انجام ميدم (اينم بگم که workersupportscancellation = true هست) برايه شروع !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! برايه cancel کردن !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ولی جواب هميشه true ميشه اگه کمک کنی ممنون ميشم hamidreza_buddy05-08-2007, 04:01 PMباید توی پروسه ای که در حال اجرا هست چک کنی که آیا bakground.CancellationPending مقدارش true شده یا نه. چون بعد از اجرای CancelWork() این مقدار true می شود و ما باید پروسه مان را به پایان برسانیم. مخصوصاً اگر پروسمون یک حلقۀ بینهایت داشته باشه. وگرنه تا آخر اجرا میشه و هیچ راهی برای متوقف کردنش نیست. در ضمن یه چیز جالب هم در این باره تغییر مشخصات فرم (یا در کل داده های یک ریسمان دیگر) هست. چون این دو در دو ریسمان متفاوت هستند این کار به صورت مستقیم امکان پذیر نیست. مثلاً برای تغییر اندازۀ فرم (Size) اگر به صورت مستقیم در پروسه عمل کنیم یک Exception رخ می دهد. برای مثال من خودم می بایست در این متد ScrollSize یک فرم رو تغییر می دادم. ولی اگه مستقیم می نوشتم که مثل !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! یک exception رخ می داد. برای حل این مشکل باید این کارو می کردم: ابتدا یک delegate ایجاد کنم: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! بعد توی فرمم یک عضو از این نوع ساختم: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! بعد اونو تو سازنده مقداردهی کردن: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! و تابعی با این نام در فرم ایجاد کردم: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حال هر وقت نیاز به تغییر دادن ScrollSize فرم در پروسه بود اینگونه عمل می کردیم: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! آخیش تموم شد! B O L O T05-08-2007, 10:26 PMممنون کارت عالیه . rahgouzar21-12-2007, 11:42 PMسلام خيلي ممنون از پستتون ميخواستم بدونم چه طور ميشه مقداري رو كه از انجام يك پروسه در backgroundworker بدست آورديم به يك textbox در همون فرم منتقل كنيم با تشكر lahij.ir22-08-2010, 01:09 AMسلام خيلي ممنون از پستتون ميخواستم بدونم چه طور ميشه مقداري رو كه از انجام يك پروسه در backgroundworker بدست آورديم به يك textbox در همون فرم منتقل كنيم با تشكر سلام سوال منم همینه ، مستقیم نمیتونم یه مقدار بدم به شی روی فرمم چی کار کنم ؟:41: without_all23-08-2010, 11:07 PMسلام سوال منم همینه ، مستقیم نمیتونم یه مقدار بدم به شی روی فرمم چی کار کنم ؟:41: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!تابع به رنگ آبی رو داخل backgroundWorker1_DoWork فراخانی میکنید . سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 981]