PDA

View Full Version : استفاده از ProgressBar در چند مرحله بدون هنگ کردن



pishraft
شنبه 04 مهر 1394, 15:29 عصر
سلام دوستان
من توی برنامم یه قسمت دارم که اجراش سه مرحله ای هست و بخاطر رکورد زیاد هر سه مرحله کمی طول میکشه
بمحض اجرا هم فرم تو حالت not responding میره تا زمانی که پروسه تموم میشه
میشه طوری progressbar گذاشت که هم از حالت هنگ موقت جلوگیری کنه و هم هر مرحله که تموم میشه نشون بده که به مرحله بعد میره؟
ممنون از راهنماییاتون

i-mahdi
شنبه 04 مهر 1394, 15:36 عصر
دوست عزیز فکر می کنم باید از thread ها استفاده کنید.

pishraft
یک شنبه 05 مهر 1394, 08:07 صبح
میشه بیشتر راهنمایی کنید؟
تا به حال استفاده نکردم ازشون
ممنون

shadi khanum
یک شنبه 05 مهر 1394, 08:33 صبح
سلام دوستان
من توی برنامم یه قسمت دارم که اجراش سه مرحله ای هست و بخاطر رکورد زیاد هر سه مرحله کمی طول میکشه
بمحض اجرا هم فرم تو حالت not responding میره تا زمانی که پروسه تموم میشه
میشه طوری progressbar گذاشت که هم از حالت هنگ موقت جلوگیری کنه و هم هر مرحله که تموم میشه نشون بده که به مرحله بعد میره؟
ممنون از راهنماییاتون

این مثال رو ببین. شاید به دردت بخوره

malloc
یک شنبه 05 مهر 1394, 14:39 عصر
سلام دوستان
من توی برنامم یه قسمت دارم که اجراش سه مرحله ای هست و بخاطر رکورد زیاد هر سه مرحله کمی طول میکشه
بمحض اجرا هم فرم تو حالت not responding میره تا زمانی که پروسه تموم میشه
میشه طوری progressbar گذاشت که هم از حالت هنگ موقت جلوگیری کنه و هم هر مرحله که تموم میشه نشون بده که به مرحله بعد میره؟
ممنون از راهنماییاتون

حلقه for داری ؟؟؟؟

اگه حلقه داری انتهای حلقه قبل از { که حلقه بسته بشه دستور زیر رو بنویس

application.doevent();

pishraft
یک شنبه 05 مهر 1394, 16:31 عصر
برای این پردازش حدود 4 هزار رکورد دارم که همه اونها باید یکی یکی فراخوانده شن
توی سه مرحله که مرحله اول خودش شامل چندین تابع و مرحله پردازش میزش
دو و سه هم ارسال به دیتابیس و گزارش گیری هستن
مرحله زمان زیادی میبره
حدودا 1و نیم دقیقه طول میکشه
تو این مدت هم فرم به حالت notResponding میره

Mahmoud Zaad
یک شنبه 05 مهر 1394, 17:03 عصر
سلام
از کامپوننت BackGroundWorker که توی تولباکس هست استفاده کنید. کارهای محاسباتی رو توی رویداد DoWork بنویسید یه تصویر لودینگ یا یا پیغام هم یه گوشه ای بزارید مثلاً "لطفاً منتظر باشید..." کارهای نمایش نتایج و مخفی کردن پیغام رو هم در رویداد RunWorkComplete بنویسید.

ژیار رحیمی
یک شنبه 05 مهر 1394, 20:13 عصر
با این تعداد رکورد بالا بهتره جهت کاهش زمان اجرا از موازی سازیParallel استفاده کن

cmsdqq2
جمعه 20 آذر 1394, 00:03 صبح
ببخشید بنده هم تقریبا همین مشکل رو در WPF با دارم فقط تا Invoke پیش رفتم و متاسفانه گیر کردم.http://barnamenevis.org/attachment.php?attachmentid=137387&d=1449780620