نمایش نتایج 1 تا 5 از 5

نام تاپیک: آزادسازی حافظه

  1. #1
    کاربر دائمی آواتار alibilgats
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    همین حوالی
    پست
    155

    Red face آزادسازی حافظه

    با سلام.
    میرم سر اصل مطلب!
    فرض کنید شما یه فرم دارید که یه دیتاگرید هم روی اون گذاشتید و از طریق DataSet,DataTableAdapter,DataBindingsource به یک جدول توی بانک اطلاعاتی SQL متصل شدید . توی Load فرم هم این کد رو نوشتید :

     this.MyTableAdapter.Fill(this.MyDataset.MyTable); 

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

  2. #2

    نقل قول: آزادسازی حافظه

    با سلام
    بنظرم با this.close(); بعد از بستن فرم حافظه آزاد مي شه
    موفق باشيد

  3. #3
    کاربر دائمی آواتار shahab_ss
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    bangkok
    سن
    43
    پست
    434

    نقل قول: آزادسازی حافظه

    با استفاده از کلمه کلیدی Using این اتفاق بصورت خودکار رخ میده

    using (SqlConnection _conn =
    new
    SqlConnection(ConfigurationManager.ConnectionStrin gs["constreng"].ToString()))
    {
    using (SqlCommand _comm = new SqlCommand("GetRevenueByOwner", _conn))
    {

    }

    // Do something with _conn here
    }

  4. #4
    کاربر دائمی آواتار alibilgats
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    همین حوالی
    پست
    155

    نقل قول: آزادسازی حافظه

    دوباره سلام

    من خودم برای بستن فرمم از
    this.close
    استفاده میکنم ولی جواب نمیده

    در مورد روش دوست عزیزی که گفتن از Using استفاده کنم راستش من متوجه منظورتون نشدم
    اگر میشه بیشتر توضیح بدین . با مثال که چه بهتر !

  5. #5
    کاربر دائمی آواتار fjm11100
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    43
    پست
    658

    نقل قول: آزادسازی حافظه

    ْتا جايي كه من ميدونم GC اين كارو ميكنه اما بهتره هميشه موقع كار با DB منابع را خودت آزاد كني و براي اين كار يك Destructor بساز حتما پيشبيني خطاها را هم بكن تا اگر طبق روال جلو نرفتش باز منابع در آخر كار آزاد شوند

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •