PDA

View Full Version : استفاده از progress Bar در زمانی که امکان محاسبه زمان روند اجرایی رو نداریم



bade saba
سه شنبه 18 آبان 1389, 22:54 عصر
سلام خدمت دوستان برنامه نویس

اول به خاطر این عنوان برای تاپیک عذر میخوام حقیقتش نمیدونستم چی باید بزارمش

اما اصل مطلب ، من یه تابع دارم که به شکل backGroundWorker رانش میکنم این تابع تشکیل شده از بخش هایی مثل وصل شدن به اینترنت و بانک اطلاعاتی بر روی سیستم و از این جور کارها یعنی این که امکان زیر نظر داشتن روند زمانی اون رو مثلا مثل حلقه for نداریم که بشه باهاش progress Bar رو مقدار داد من میخوام برای روند اجرایی این تابع از progress Bar استفاده کنم

حالا راهی برای این کار هست که پر کردن progress Bar رو به خود برنامه بسپوریم که با تخمینی که میزنه خودش اون رو مقدار دهی کنه؟؟؟؟

ممنون میشم اگه کمکم کنید

Reza_Yarahmadi
چهارشنبه 19 آبان 1389, 07:31 صبح
بعضي از كارها محاسبه زمانشون غير ممكنه براي اين كارها معمولا فقط پيغامي مثل "لطفا منتظر بمانيد" نمايش داده ميشه و يا با يك پروگرس بار كه پر و خالي ميشه نشون ميدن.
براي كارهاي چند مرحله اي ميشه هر مرحله كه انجام شد پروگرس رو يك مقدار جلو برد در اين حالت فقط تعداد مراحل انجام شده نمايش داده ميشه. در كل براي كاري مثل كار شما نميشه تخمين درست و يا نزديكي زد چون سرعت انجام به عوامل زيادي وابسته است (سرعت اينترنت ، سرعت سرور ، تعداد كانكشن فعال ، حجم داده اي كه قراره پردازش بشه و...)

bade saba
چهارشنبه 19 آبان 1389, 10:47 صبح
ممنون از توجه تون ، من این گفته شما رو میدونم ولی مثلا برای IE هم این موضوع صدق میکنه ( سرعت اینترنت و ... ) اما اونجا از یک progress bar استفاده شده و اگر به کارش هم نگاه بکنید میبینید که دقیق نیست و کاملا تخمینی هست ( یعنی حرکتش سریع و کند میشه در یک پروسه لود کردن پیج ) من هم دقیقا یه همچین چیزی میخوام که به شکل تخمینی این کار رو انجام بده

Reza_Yarahmadi
چهارشنبه 19 آبان 1389, 10:54 صبح
ممنون از توجه تون اما من این گفته شما رو میدونم ولی مثلا برای IE هم این موضوع صدق میکنه ( سرعت اینترنت و ... ) اما اونجا از یک progress bar استفاده شده و اگر به کارش هم نگاه بکنید میبینید که دقیق نیست و کاملا تخمینی هست ( یعنی حرکتش سریع و کند میشه ) من هم دقیقا یه همچین چیزی میخوام که به شکل تخمینی این کار رو انجام بده چندان هم تخميني نيست! وقتي حجم فايلي كه ميخوايد دريافت كنيد رو داشته باشيد به راحتي ميتونيد به هر اندازه كه تا الان دريافت كرديد رو توي پروگرس بار نمايش بديد پارامترها هم به مراتب كمتر هستند.
ولي شما فرض كنيد ميخوايد يك ريپورت از بانك بگيريد. اگر بخوايد با يك دستور بگيريد (يك Select) تا زماني كه كل داده ها دريافت نشه با خبر نميشيد. (البته براي اين كارها هم ترفندهايي وجود داره ، مثلا ميشه اطلاعات رو تيكه تيكه خوند (يا نوشت) و در آخر به هم چشبوند.).