PDA

View Full Version : کنترلهای فرمم زیاده،آیا در فرمم از BackGroundWorker استفاده کنم؟



vahid2112
شنبه 07 بهمن 1391, 07:11 صبح
بسم الله

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

راه حلش چیه که اینطور نشه؟

آیا در فرمم از BackGroundWorker استفاده کنم؟

the king
شنبه 07 بهمن 1391, 08:11 صبح
بسم الله

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

راه حلش چیه که اینطور نشه؟

آیا در فرمم از BackGroundWorker استفاده کنم؟

اون زمانی که صرف Load شدن فرم میشه که به هر حال باید صرف بشه. یعنی تا زمانی که اون کنترل ها Load نشده اند
فرم برای کاربر قابل استفاده نیست. BackgroundWorker می تونه یک کاری رو پشت پرده انجام بده، مقداری رو محاسبه کنه یا از بانک اطلاعاتی بخونه،
اما کنترل هایی که روی فرم قرار داره رو نمی تونه Load یا مقدار دهی کنه، چون دسترسی بهشون در Thread اصلی امکان پذیره.
اگر کنترل ها رو همینطور که الان هست در داخل فرم نگهدارید، حتی اگر از BackgroundWorker استفاده کنید باز نهایتا باید Load شدن شون رو
در Thread اصلی انجام بدهید.

پیشنهاد می کنم که هر چه Control داخل فرم دارید به داخل یک User Control منتقل کنید و فرم رو خالی نگه دارید،
با کمک BackgroundWorker یک نمونه شیء از اون User Control رو در Thread جدید بسازید (Load شدن در Thread جدید)
و وقتی شیء آماده شد، از Thread اصلی بخواهید که اون شیء رو Add کنه. از اونجایی که شیء قبلا Load شده،
نمایش اش سریع انجام میشه. چه بهتر که در این فاصله که شیء آماده نمایش میشه فرم یک انیمیشن Loading نشون بده.

99009