من یه برنامه multithread نوشتم . مشکل اینجاست که دایم مقدار حافظه مورد استفاده بالاتر میره . این برنامه پورت استکنر هست. حتی بعد از زدن دکمه stop حافظه خالی نمی شه.
مشکل چیه باید از Dispose() استفاده کنم؟
من یه برنامه multithread نوشتم . مشکل اینجاست که دایم مقدار حافظه مورد استفاده بالاتر میره . این برنامه پورت استکنر هست. حتی بعد از زدن دکمه stop حافظه خالی نمی شه.
مشکل چیه باید از Dispose() استفاده کنم؟
سلام
میشه توضیح بدین کجای کد پورت اسکنرباعث بالا رفتن حافظه میشه؟احتمالا روشتون مشکل داره.کد بدین بهتر می شه بحث کرد.آیا این پورت اسکنر فقط پورت ها را برای باز/بسته بودن چک میکنه؟یا علاوه بر اون برنامه ای که به آن شنود میکند را هم پیدا میکند؟و...
در تکمیل پاسخ دوستمون...
یکی از مزایای بلقوه CSharp نسبت به زبانهای دیگه مدیریت حافضه توسط خود زبان هست ، به این صورت که خود برنامه بس از مدتی که ببیند شما از یه کلاس یا یه متغیری استفاده نمی کنید (مقدار ارجاعی به متغیر یا کلاس توسط برنامه 0 هست) اون متغیر یا... رو از چرخه اجرایی خارج می کند. (متغیر یا کلاس یا شی رو حذف می کنه).
پورت های باز را پیدا می کنه حالا رو listen باشه. کدم را براساس multithreading کتاب pro .net نوشتم
از قابلیت C# می دونم برای همین باعث تعجبه . کد کتاب هم انگار همین مشکل را داره این زیر می زارمش .چندین بار بزارید برنامه محاسبه بکنه . میشه تو debug فهمید کچای کد باعث این مشکله؟
http://majlesi3.persiangig.com/Pro_N...com%281%29.zip
آخرین ویرایش به وسیله gbox26 : چهارشنبه 17 شهریور 1389 در 05:19 صبح دلیل: ویرایش
بیشتر مشکل این بود که هر بار یه کپی از کلاسما به این لیست اضافه می کردم. البته بعد از کار لیستا را پاک کردم که البته مقدار حافظه مصرف شده را کاهش داد. ولی رضایت بخش نیست. کلا طراحی برنامه را دارم عوض می کنم. اگه جواب بقیه سوالاما می دونید لطفا جواب بدید.
کدوم سوالات ؟؟ سوال دیگری اینجا نیست؟؟؟اگه جواب بقیه سوالاما می دونید لطفا جواب بدید.
میشه تو debug فهمید کچای کد باعث این مشکله؟