PDA

View Full Version : مشکل با اشغال فضای Ram تا 700 مگابایت توسط نرم افزار و حتی بیشتر



Abbas Naghdi
یک شنبه 05 مرداد 1393, 14:04 عصر
سلام بچه ها ... یه مشکل دارم ...
یه نرم افزار دارم با حدودا 90 فرم ... در زمان اجرا برای اولین بار حجم Ram اشغالیش 76 تا هست و هر فرمی رو باز و بسسته میکنم فضای زیاد تری رو اشغال میکنه با اینکه فرم ها همه بسته هستند ... حتی استفاده بعد از یکی دو ساعت به 700 مگ هم میرسه ... از Telerik استفاده کردم و فرم ها رو ShowDialog میکنم ... به نظرتون مشکل از چیه ؟

s.karim
یک شنبه 05 مرداد 1393, 14:08 عصر
اولین ایرادش Telerike
خیلی سنگینه

hamid_hr
یک شنبه 05 مرداد 1393, 15:03 عصر
هر فرمی رو اینطوری باز کن ببین فرقی میکنه یا نه

using (var frm = new FrmMesseg()) {
frm.ShowDialog();
}

mz6488
یک شنبه 05 مرداد 1393, 15:31 عصر
هر فرمی رو اینطوری باز کن ببین فرقی میکنه یا نه

using (var frm = new FrmMesseg()) {
frm.ShowDialog();
}

این using ها که وسط کد میاد منظورش چیه؟

hamid_hr
یک شنبه 05 مرداد 1393, 15:39 عصر
تضمین میکنه که همه فضای اشغال شده توسط اون شی که تو این کد همون فرم هست رو آزاد کنه زمانی که به { رسید

Abbas Naghdi
یک شنبه 05 مرداد 1393, 15:50 عصر
با تشکر این ها هم کار ساز نیستند ... !
مسکل از SQl نسیت به نظر شما ؟

hamid_hr
یک شنبه 05 مرداد 1393, 16:02 عصر
ببینین اگه منابعی که باز میکنین رو dispose کنین مشکلی نباید داشته باشه
مثل dataset,datatable رو حتما باید dispose ;کنین

Abbas Naghdi
یک شنبه 05 مرداد 1393, 16:07 عصر
بچه ها یه متد نوشتم مشکل حل شد ... از 110 مگ بالاتر نمیره اما بعد از باز کردن چند فرم و بستن اون ها این 110 مگ رو به 67 تا تبدیل میکنه ... دل کل خوبه اما علت چیه ... کدی که نوشتم مشکلش چیه به نظرتون ؟

public static void Launch(Form frm)
{
using (var frmn = frm)
{
if (Application.OpenForms[frmn.Name] == null)
{
frmn.WindowState = FormWindowState.Normal;
frmn.FormBorderStyle = FormBorderStyle.FixedSingle;
frmn.MaximizeBox = false;
frmn.MinimizeBox = false;
frmn.ShowInTaskbar = false;
frmn.ShowIcon = false;
frmn.StartPosition = FormStartPosition.CenterScreen;
frmn.ShowDialog();
frmn.Dispose();
}
}
}

Abbas Naghdi
یک شنبه 05 مرداد 1393, 16:13 عصر
بچه ها با این کد حل شد از 95 تا بالاتر نمیره اما باز هم دیر آزاد سازی میکنه ... !


using (Form frmn = frm)
{
if (Application.OpenForms[frmn.Name] == null)
{
frmn.WindowState = FormWindowState.Normal;
frmn.FormBorderStyle = FormBorderStyle.FixedSingle;
frmn.MaximizeBox = false;
frmn.MinimizeBox = false;
frmn.ShowInTaskbar = false;
frmn.ShowIcon = false;
frmn.StartPosition = FormStartPosition.CenterScreen;
frmn.ShowDialog();
frmn.Dispose();
}
else
{
frm.Dispose();
return;
}
}
frm.Dispose();

Abbas Naghdi
یک شنبه 05 مرداد 1393, 17:11 عصر
کد نهایی رو میزارم .... شما راه حل بهتری ندارین برای باز کردن این 90 فرم ؟


public static void Launch(Form frm)
{
if (Application.OpenForms[frm.Name] == null)
{
using (Form frmn = frm)
{
frmn.WindowState = FormWindowState.Normal;
frmn.FormBorderStyle = FormBorderStyle.FixedSingle;
frmn.MaximizeBox = false;
frmn.MinimizeBox = false;
frmn.ShowInTaskbar = false;
frmn.ShowIcon = false;
frmn.StartPosition = FormStartPosition.CenterScreen;
frmn.ShowDialog();
frmn.Dispose();
}
}
else
{
frm.Dispose();
return;
}
frm.Dispose();
}

omid nasri
یک شنبه 05 مرداد 1393, 22:23 عصر
بهترین کار اینه که شما بیایی و Task Manager رو باز کنی و نگاهی دقیق به پروسه های در حال اجرا بندازی، اگه ویندوز 8 باشه که شاهکار هستش می تونی مانیتور انجام بدی .

s.karim
چهارشنبه 08 مرداد 1393, 18:23 عصر
از یه برنامه نویس بعیده که از telerik و یا سایر کامپوننت های آماده استفاده کنه چون هم محدودیت ایجاد میکنه و هم سنگینه