PDA

View Full Version : سوال: آیا فرم جدید هم مخرب نیاز داره ؟؟؟؟



migrant
دوشنبه 21 مرداد 1387, 13:59 عصر
سلام
آیا وقتی یه شیی از فرم جدید می سازیم نیاز به مخرب داره وقتی فرم رو close می کنیم یا خودش با بسته شدن فرم مخرب آن بصورت اتومات شیی رو از بین می بره و اگه جواب منفیه راه حل و طرز ساختن و استفاده از مخرب رو بیان کنید .
چرا بار اول که یه شیی از یه فرم می سازیم و نمایش می دهیم سرعت اجرا کمی پایینه و یکم تاخیر داره ولی در بار های دیگه که می خواهیم یه شیی از همون کلاس یا فرم بسازیم وshow کنیم خیلی سریع و بدون هیچ تاخیری نمایش داده میشه . . . .
اصوالاو منطقا نباید تغییری در سرعت نمایش داشته باشه پس نمیشه گفت اشکال از سرعت سیستم است . .. . . .
؟؟؟؟؟؟؟؟؟؟؟

Amir Oveisi
دوشنبه 21 مرداد 1387, 15:27 عصر
آیا وقتی یه شیی از فرم جدید می سازیم نیاز به مخرب داره وقتی فرم رو close می کنیم یا خودش با بسته شدن فرم مخرب آن بصورت اتومات شیی رو از بین می بره
بله، کدهای NET.‌بصورت mnaged هستند یعنی خود NET. عمل مدیریت حافظه رو انجام میده.این عمل توسط GC یا همون Garbage Collector انجام میشه. البته شما میتونین برای فراخونی مخرب یه object بصورت دستی، از متد Dispose اون object‌استفاده کنید. ولی با این کار هم در همون لحظه اون object از حافظه پاک نمیشه بلکه با با این کار شما به GC‌اعلام میکنید که میخواید این object از حافظه پاک بشه و تصمیم نهایی رو خود GC خواهد گرفت که کی اونو پاک کنه.
روش دوم استفاده از متد GC.Collect هست که اگر اونو بصورت ForcedMode اجرا کنید تا حدی سریع تر عمل میکنه.
در حالت کلی و معمولا احتیاجی به هیچ کدوم از این کارا ندارید و GC به خوبی همه چیز رو مدیریت میکنه.


چرا بار اول که یه شیی از یه فرم می سازیم و نمایش می دهیم سرعت اجرا کمی پایینه و یکم تاخیر داره ولی در بار های دیگه که می خواهیم یه شیی از همون کلاس یا فرم بسازیم وshow کنیم خیلی سریع و بدون هیچ تاخیری نمایش داده میشه

در اولین بار اجرای یک فرم، کدهای برنامه شما توسط JIT بصورت runtime‌کامپایل میشن تا فرم نشون داده بشه واسه همین ممکنه یه کم طول بکشه، ولی برای بار دوم که میخواین فرم باز بشه دیگه دوباره عمل کامپایل انجام نمیشه بلکه از کد کامپایل شده قبلی استفاده میشه و طبیعتا این بار سریع تر خواهد بود.

موفق باشید
jooje

migrant
چهارشنبه 23 مرداد 1387, 20:50 عصر
در اولین بار اجرای یک فرم، کدهای برنامه شما توسط JIT بصورت runtime‌کامپایل میشن تا فرم نشون داده بشه واسه همین ممکنه یه کم طول بکشه، ولی برای بار دوم که میخواین فرم باز بشه دیگه دوباره عمل کامپایل انجام نمیشه بلکه از کد کامپایل شده قبلی استفاده میشه و طبیعتا این بار سریع تر خواهد بود.

موفق باشید
jooje[/quote]


ممنون از جواب دقیقتون ولی ما وقتی یه پروژه رو کامپای می کنیم و فایل exe رو دریافت می کنیم دیگه نیاز به کامپایل نداره . . . . . . .
من منظورم در حین اجرا بود .
من تنها همین مشکل هست که من میل و علاقه ام رو نسبت به دات نت کم کرده :ناراحت:

SYSMAN
پنج شنبه 24 مرداد 1387, 11:04 صبح
همانطور كه توضيح داده شد در بار اول برنامه كامپايل مي شه و از آن به بعد كدهاي كامپايل شده مورد استفاده قرار مي گيره. اون فايل exe هم كه ساخته مي شه در واقعه فايل كامپايل شده نهايي نيست از در واقع كدهاي برنامه هست كه تبديل شده به MSIL و در زمان اجرا MSIL بر اساس سيستم عامل و سخت افزار كامپايل مي شه به برنامه قابل اجرا در سيستم مقصد.