PDA

View Full Version : کاربدون background worker



HadiVB
پنج شنبه 05 شهریور 1388, 09:17 صبح
اقا این ابزار خیلی ایراد داره
یه راهی هست که بشه کاری کرد که برنامه توی for ها هنگ نکه
به طور کلی توی همه progress های برنامه

علیرضا مداح
پنج شنبه 05 شهریور 1388, 09:34 صبح
سلام دوست عزیز،
شما برای اینکار باید از Multi-Threading استفاده نمایید، کاری که کامپوننت BackgroundWorker انجام می دهد، پنهان کردن پیچیدگی های Multi-Threading از دید برنامه نویس می باشد و در سناریوهای پیچیده Multi-Threading ممکن است پاسخگوی نیازهای شما نباشد و در آن زمان باید خودتان توسط امکانات Multi-Threading موجود در .Net Framework به مقصود خود برسید،
1)با این توضیحات منظور شما از ایراد در این کامپوننت چیست؟
2)سناریوی خود را شرح دهید تا بتوان راه حل مناسب را ارائه داد،/

Hossis
سه شنبه 22 دی 1388, 08:11 صبح
این Multi-Threading هم مشکلات دارد
مثلا در حلقه داخل آن نمی شود از کنترل های روی فرم استفاده کرد

Mani_rf
سه شنبه 22 دی 1388, 21:15 عصر
از Application.Doevents درون حلقه هایتان استفاده نمایید.

For I as integr = 1 to 500000
'.
'.
'.

Application.DoEvents()
Next

Navid Asadi
سه شنبه 22 دی 1388, 22:35 عصر
از Application.Doevents درون حلقه هایتان استفاده نمایید.

این کار باعث کند تر شدن روند حلقه ها نمیشه؟
اگه یکی از دستورات خیلی سنگین باشه این روش جواب نمیده (مثلا ذخیره رکورد های پر حجمی مثل فیلم در دیتابیس)، درسته یا اشتباه میکنم؟

Hossis
چهارشنبه 23 دی 1388, 01:04 صبح
از Application.Doevents درون حلقه هایتان استفاده نمایید.

For I as integr = 1 to 500000
'.
'.
'.

Application.DoEvents()
Next

اینو که خودم بلد بودم
با استفاده از این ترفند و بردن حلقه به یک فرم دیگر ، مشکلم حل شد.