PDA

View Full Version : حرفه ای: چه طوری میشه با BackGround Worker و ProgressBar کار کرد



NasimBamdad
دوشنبه 06 مهر 1394, 09:47 صبح
سلام و خسته نباشید


یه قطعه کدی دارم که به دیتابیس متصل میشه و یکسری کوری ها رو می خونه و در نهایت یه فایل TXT درست می کنه .

برای اینکه این کار سنگینه و موجب هنگ کردن سیستم میشه بنده از Background Worker استفاده کردم

میخواستم بدونم میشه کاری کرد که یه Progress Bar بذاریم و مدت زمانی که طول می کشه رو با PrgoressBar نشون بده و لودینگ بندازه ؟

ممنونم

Mahmoud Zaad
دوشنبه 06 مهر 1394, 10:02 صبح
سلام
اگر شما تعداد کوئری ها رو می دونید که مشکل حل میشه و هر بار که یک کوئری خونده میشه مقدار progress bar رو هم تغییر می دید. اما اگر تعداد رو نمی دونید باید از یک infinite progress bar یا infinite loading gif استفاده کنید یعنی همین عکس هایی که یکسره می چرخن تا عملیات مورد نظر انجام بشه!

این هم یه نمونه (http://barnamenevis.org/showthread.php?436681-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF-%D9%85%D8%AB%D8%A7%D9%84-%D8%B9%D9%85%D9%84%DB%8C-%D8%A7%D8%B2-Background-Worker-%D9%88-ProgressBar) که زیر همین تاپیک نمایش داده شده.

NasimBamdad
دوشنبه 06 مهر 1394, 13:08 عصر
سلام
اگر شما تعداد کوئری ها رو می دونید که مشکل حل میشه و هر بار که یک کوئری خونده میشه مقدار progress bar رو هم تغییر می دید. اما اگر تعداد رو نمی دونید باید از یک infinite progress bar یا infinite loading gif استفاده کنید یعنی همین عکس هایی که یکسره می چرخن تا عملیات مورد نظر انجام بشه!

این هم یه نمونه (http://barnamenevis.org/showthread.php?436681-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF-%D9%85%D8%AB%D8%A7%D9%84-%D8%B9%D9%85%D9%84%DB%8C-%D8%A7%D8%B2-Background-Worker-%D9%88-ProgressBar) که زیر همین تاپیک نمایش داده شده.

یعنی برای فعالیت هایی که نمی دونیم چقدر زمان می بره نمیشه ProgressBar گذاست ؟

مثلا وقتی Word میاد بالا یه SplashScreen گذاشتند و یا خیلی از برنامه های دیگه که ProgressBar با اون کار می کنه .

Mahmoud Zaad
دوشنبه 06 مهر 1394, 13:37 عصر
پروگرس بار یه value داره که یه مقدار maximum باید براش تنظیم بشه، وقتی که عملیات شروع میشه به این Value اضافه میشه تا به مقدار maximum برسه. حالا وقتی شما نمی دونید که مقدار maximum چقدر هست پروگرس بارتون پیشرفت رو به درستی نشون نمیده و یه حالت نمایشی داره که کاربر رو هم گمراه میکنه.
نرم افزاری مثل Word احتمالاً در شروع به کار داره یکسری فایلها و تنظیمات رو انجام میده و اگر پروگرس باری هم داشته باشه با توجه به انجام شدن اون عملیات به مقدارش اضافه میشه و اگر سیستم کانفیگ قدرتمندی نداشته باشه برنامه دیرتر بالا میاد و برعکس.

******** ویرایش

البته نیازی نیست شما بدونید عملیات شما چقدر زمان می بره، همین که بدونید چندتا عملیات دارید هم کافی هست مثلاً علاوه بر پروگرس بار، میشه نوشت "در حال انجام عملیات 1 از 100 ..." و الی آخر