PDA

View Full Version : مشکل usercontrol در موقع Dispose شدن



golinazhad_h
چهارشنبه 21 فروردین 1392, 09:05 صبح
سلام
من یک usercontrol در سی شارپ ساختم و یک imagebox هم بهش اضافه کردم در موقع instance کردن از این کنترل دوتا bitmap و یک thread هم میسازم و نهایتا thread را اجرا میکنم وظیفه این thread ساخت انیمیشن با تصویر است
اگر چند تا از این usercontrol بسازم و از روی فرم remove نکنم و thread داخل usercontrol برای همیشه کار کند هیچ مشکلی ندارد
ولی اگر چند تا از این usercontrol بسازم thread داخلش را اجرا کنم و بعد ار اتمامش توسط فرم اصلی این usercontrol ها را اروی فرم dispose کنم بعد دوباره ایجاد کنم و اجرا کنم(عمل ایجاد و dispode مدام تکرار شود ) تعداد هندلهخای ایجاد شده در ویندوز مرتبا زیاد میشود و برنامه هنگ میکند
ضمنا وقتی usercontrol را dispose میکنم همه کنترلهای داخلش و حتی thread را هم نیز dispose میکنم و در انتهای متد dispose باز base.dispose() را هم فراخوانی میکنم gorbrage collector را هم فراخوانی میکنم
به نظر دوستان مشکل چی میتونه باشه؟

golinazhad_h
چهارشنبه 21 فروردین 1392, 12:56 عصر
کسی چیزی به ذهنش نمیرسه؟

massar
چهارشنبه 21 فروردین 1392, 14:39 عصر
سلام

صدا کردن dispose لزوما همیشه thread رو terminate نمیکنه در واقع کار dispose فقط آزاد کردن ریسورساس. بجاش از Join استفاده کنید، join صبر میکنه تا thread خارج شه اینطوری اگه thread مشکلی داره که خارج نمیشه میتونین بفهمین. join اگر کار thread تموم شه true و اگر timeout صورت بگیره false برمیگردونه.

golinazhad_h
چهارشنبه 21 فروردین 1392, 21:07 عصر
سلام

صدا کردن dispose لزوما همیشه thread رو terminate نمیکنه در واقع کار dispose فقط آزاد کردن ریسورساس. بجاش از Join استفاده کنید، join صبر میکنه تا thread خارج شه اینطوری اگه thread مشکلی داره که خارج نمیشه میتونین بفهمین. join اگر کار thread تموم شه true و اگر timeout صورت بگیره false برمیگردونه.

مشکل thread نیست thread و همه ریسورسها کاملا دیسپوز میشه چون موقع دیسپوز کردن تا اتمام کامل thread منتظر میمونم