مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

dispose خودکار کلاس های استاتیک

  • شنبه 4 اردیبهشت 1395
  • 15:22
تشکر میکنم

با عرض سلام

دوستان می خوام یک کلاس استاتیک ایجاد کنم که یک سری متد استاتیک داشته باشه و توی کد های C# یا توی Razor اون تابع و کلاس هاش رو صدا بزنم ، تا اینجا مشکلی ندارم ، من اگه بخوام بعد از هر بار فراخونی این کلاس و متد هاش خودشون بعد از انجام کار Dispose بشن باید چکار کنم ؟

دوستان اگه امکانش هست راهنمایی بفرمایید ممنون میشم

پاسخ های این پرسش

تعداد پاسخ ها : 11 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 4 اردیبهشت 1395
  • 16:28

شما میتونید object هایی که میسازید را بعد از اتمام کار Dispose‌کنید

یا برای ساخت نمونه جدید از using‌استفاده کنید

کاربر سایت

mahboub

عضویت از 1394/04/17

  • جمعه 8 بهمن 1395
  • 12:03

سلام

سوالی در همین حوزه داشتم

من با کلیک یک Button در فرم اصلی فرم دیگری که زمان بسته شدنش   GC.Collect(); گذاشتم رو باز میکنم.

بعد بسته شدن فرم دوم میزان استفاده از رم به حالت اول(قبل باز شدن فرم دوم) بر نمیگرده؟

مشکل کجاست؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 8 بهمن 1395
  • 12:05

برای همه Object ها  متد dispose هست باید فراخوانی کنید

کاربر سایت

mahboub

عضویت از 1394/04/17

  • جمعه 8 بهمن 1395
  • 12:30
این یکی از توابعی هست که استفاده میکنم
Dispose برای ابجکت ها وجود داره
الان تو این قسمت bt و result هم بعدش ازاد میشن
یا باید برای ازادشدنش کار دیگه ای انجام بشه؟
 public Stream ExtractMp3FileFromZip(string path, string password)
        {
            Stream  result = null;
            using (MemoryStream Memory = new MemoryStream())
            {
                try
                {
                    using (ZipFile zip = ZipFile.Read(path))
                    {
                        zip.Password = password;
                        zip["help.mp3"].Extract(Memory);
                    }
                    Memory.Seek(0, SeekOrigin.Begin);
                    byte[] bt = Memory.GetBuffer();
                    result = new MemoryStream(bt);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            return result;
        }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 8 بهمن 1395
  • 13:51

شما از using استفاده کردید و این بدین معناست که اتوماتیک Dispose میشه

مشکل دیگه در کدهاتون ندیدم و همه چی درست به نظر میرسه

کاربر سایت

mahboub

عضویت از 1394/04/17

  • جمعه 8 بهمن 1395
  • 13:57

تو این برنامه یک فایل mp3 از درون فایل زیپ برای پخش extract میشه

بعد بستن فرم حافظه بصورت کامل بر نمیگرده

برای استفاده از مقدار برگشتی این تابع از این دستور استفاده کردم

reader = new Mp3FileReader(ExtractMp3FileFromZip(Path, Pass))

که بدلیل اینکه میخوام روی  timer1_Tick حرکت روی trackBar رو داشته باشم نمیتونم از using استفاده کنم

اما موقع بسته شدن فرم dispose گذاشتم براش

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 8 بهمن 1395
  • 16:05

بعد از Dispose باید منابع را آزاد کنه

مطمئن هستید میزان حافظه اشغالی مربوط به همین عملیاد هست ؟

کاربر سایت

mahboub

عضویت از 1394/04/17

  • جمعه 8 بهمن 1395
  • 20:38

کار دیگه ای انجام نمیشه

کاربر سایت

mahboub

عضویت از 1394/04/17

  • جمعه 8 بهمن 1395
  • 20:40

در فرم دیگری فقط برای ویندوز سون این مشکل رو دارم؟

مشکل چیه و چرا فقط سون؟

ممنونم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 8 بهمن 1395
  • 22:13

داخل Detail باید جزئیات خطا وجود داشته باشه اگر نبود Nlog را نصب کنید تا بتونید به جزئیات بیشتری از خطا درسترسی پیدا کنید

کاربر سایت

mahboub

عضویت از 1394/04/17

  • شنبه 9 بهمن 1395
  • 00:12

امکانش هست لطف کنید یه پیشنهاد برای پخش فایل صوتی داخل فایل زیپ به من بدید

soundplayer

Naudio.wave

.....

ترجیحا میخوام خودم trackbar ,... رو بزارم

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)