PDA

View Full Version : مبتدی: Page Cycle Life و آبجکت هایی که Disposable هستن



اوبالیت به بو
سه شنبه 10 فروردین 1389, 17:26 عصر
سلام

یه سوالی برای من مطرح هست.

در چرخه حیات یک صفحه وب، وقتی که صفحه بارگذاری میشه آبجکت های اون به طور خودکار Dispose می شن. آیا بازم لازم هست که آبجکت هایی که Disposable هستن رو Dispose کنیم؟

ممنون از دوستان

mehdi.mousavi
سه شنبه 10 فروردین 1389, 19:39 عصر
سلام یه سوالی برای من مطرح هست. در چرخه حیات یک صفحه وب، وقتی که صفحه بارگذاری میشه آبجکت های اون به طور خودکار Dispose می شن. آیا بازم لازم هست که آبجکت هایی که Disposable هستن رو Dispose کنیم؟ ممنون از دوستان

سلام.
دقیقا چه Object هایی مد نظرتونه؟ UI Element هایی که بصورت Declarative توی ASPX برای صفحه تعریف کرده اید؟ اگر بله، پاسخ منفی هستش. نیازی نیست این Object ها رو Dispose کنید. اگر چیز دیگه ای مد نظرتون هست، لطفا بیشتر توضیح بدید.

پاورقی: Page Life Cycle صحیحه.

اوبالیت به بو
سه شنبه 10 فروردین 1389, 21:34 عصر
UI Element هایی که بصورت Declarative توی ASPX برای صفحه تعریف کرده اید؟ اگر بله، پاسخ منفی هستش. نیازی نیست این Object ها رو Dispose کنید.
مرسی

اگر چیز دیگه ای مد نظرتون هست، لطفا بیشتر توضیح بدید.

منظورم SqlConnection یا از این قبیل عناصر...

پاورقی: Page Life Cycle صحیحه.
مرسی.

mehdi.mousavi
سه شنبه 10 فروردین 1389, 22:21 عصر
منظورم SqlConnection یا از این قبیل عناصر...

سلام.
SQL Connection رو اگر Declarative تعیین کرده اید، نه نیازی نیست. اما اگر توی کد خودتون new می کنید، بله. هر چه سریعتر اونو Dispose کنید (بعد از اتمام کار)، به Connection Pooling کمک شایانی خواهید کرد.

موفق باشید.

اوبالیت به بو
جمعه 04 تیر 1389, 02:54 صبح
استاد

ديگه چه كلاس هايي رو بايد Dispose كرد؟

mehdi.mousavi
جمعه 04 تیر 1389, 03:09 صبح
ديگه چه كلاس هايي رو بايد Dispose كرد؟

سلام.
کلیه کلاسهایی که IDisposable رو Implement کرده اند...

موفق باشید.

اوبالیت به بو
جمعه 04 تیر 1389, 11:09 صبح
کلیه کلاسهایی که IDisposable رو Implement کرده اند...

و از كجا بفهم اون كلاس IDisposable رو Implement كرده؟

mehdi.mousavi
جمعه 04 تیر 1389, 12:37 عصر
و از كجا بفهم اون كلاس IDisposable رو Implement كرده؟

سلام.
چند راه وجود داره:


توی MSDN توضیحات کلاس مورد نظر رو نگاه کنید.
توی Visual Studio، کلید CTRL-ALT-J رو بزنید تا Object Browser باز بشه. سپس نام کلاس مورد نظر رو در قسمت Search وارد کنید. وقتی Hierarchy ی کلاس نشون داده شد، Base Class ها رو باز کنید و ببینید یا IDisposable روی کلاس پیاده سازی شده یا خیر. به این تصویر نگاه کنید:


http://barnamenevis.org/forum/attachment.php?attachmentid=51758&stc=1&d=1277451269

روش بعدی اینه که روی کلاس مورد نظر خودتون کلید F12 رو بزنید، (توی محیط VS) تا تعریف کلاس رو ببینید. طبیعتا اگر کلاس از کلاسی دیگه ای Derive شده باشه، دوباره کلید F12 رو اینبار روی کلاس مزبور بزنید، تا تعریف کلاس مربوطه رو ببینید. و به همین ترتیب ادامه بدید تا به Base Class اصلی برسید. اگر تو این مسیر IDisposable رو دیدید، به این معنا هستش که کلاس مزبور IDisposable رو پیاده سازی کرده.
توی کد، روی Instance مورد نظر از کلاس، وقتی . رو میزنید و IntelliSense باز میشه، ببینید آیا متود Dispose وجود داره یا خیر (این تنها متودی هستش که روی IDisposable هستش).
و ....

موفق باشید.