ehsan_kabiri_33
یک شنبه 25 اسفند 1398, 12:09 عصر
سلام به همه دوستان که وقت میذارن و لطف میکنند:بوس:
بنده مبتدی هستم و یک برنامه خیلی پیچیده :متفکر: نوشتم که اطلاعات یک جدول در بانک Mysql را در یک Windows Form داخل یک DataGridView نشون میده !! به کمک Entity FrameWork 6
در پنجره اصلی برنامه ، یک DataGridView گذاشتم که جدول بانک اطلاعاتیم را نشون میده. که وقتی برنامه اجرا میشه حدود 76 مگ رم میخوره-
151462
اومدم یک فرم دوم اضافه کردم به نام جدول موقت! و با اجرای اون مجددا یک datagridview همان لیست را در پنجره جدید نشون میده. مسلما با اجرای فرم دوم مصرف رم بیشتر میشه و مقدار ان به حدود 122 مگ افزایش پیدا میکنه
151463
انتظار دارم که با بستن پنجره دوم (فرم موقت، فرم دوم) مجددا رم استفاده شده به همان مقدار اول 76 مگ بازگرده ولی این طور نمیشه-- از using , dispose , و همچنین try-finally dispose هم استفاده میکنم ولی باز هم هیچ تغییری نمیبینم و بعد از بسته شدن فرم دوم همچنان رم به اندازه 122 استفاده میشه و تازه هر بار پنجره دوم(فرم داخلی برنامه) را باز میکنم و میبندم دوباره هی رم استفاده شده زیاد میشه تا یجایی بعد از 380 مگا بایت دیگه زیاد نمیشه هر چی هم باز و بسته میکنم
151464
من کلا نمیفهمم چه اتفاقی داره میفته !! مگه نباید با using بعد از اینکه فرم داخلی بسته شد رم ازاد بشه؟؟
کلاس ارتباطی با دیتا بیس در لایه Datalayer:
public class UnitOfWork : IDisposable {
private MyFriendsRepository _myFriendsRepository;
mydatabaseEntities MyDB = new mydatabaseEntities();
public MyFriendsRepository myFriendsRepositoryProperty
{
get
{
this._myFriendsRepository = new MyFriendsRepository(MyDB);
return _myFriendsRepository;
}
}
public void Dispose()
{
MyDB.Dispose();
}
}
کدهای مربوط به فرم اول (فرم اصلی برنامه) یک قسمت برای لود شدن فرم اصلی - یک قسمت برای Button مربوط به فرم موقت (فرم دوم - پنجره دوم)
private void MainForm_Load(object sender, EventArgs e) {
UnitOfWork unitOfWorkInstance = new UnitOfWork();
dgvMainForm.DataSource = unitOfWorkInstance.myFriendsRepositoryProperty.Get AllFriends();
}
private void ButtonTemp_Click(object sender, EventArgs e)
{
using (TempForm tempFormInstance = new TempForm())
{
tempFormInstance.ShowDialog();
}
}
کد مربوط به فرم دوم (فرم موقت)
private void TempForm_Load(object sender, EventArgs e) {
using (UnitOfWork unitOfWorkInstance = new UnitOfWork())
{ dgvTempForm.DataSource = unitOfWorkInstance.myFriendsRepositoryProperty.Get AllFriends(); }
}
بنده مبتدی هستم و یک برنامه خیلی پیچیده :متفکر: نوشتم که اطلاعات یک جدول در بانک Mysql را در یک Windows Form داخل یک DataGridView نشون میده !! به کمک Entity FrameWork 6
در پنجره اصلی برنامه ، یک DataGridView گذاشتم که جدول بانک اطلاعاتیم را نشون میده. که وقتی برنامه اجرا میشه حدود 76 مگ رم میخوره-
151462
اومدم یک فرم دوم اضافه کردم به نام جدول موقت! و با اجرای اون مجددا یک datagridview همان لیست را در پنجره جدید نشون میده. مسلما با اجرای فرم دوم مصرف رم بیشتر میشه و مقدار ان به حدود 122 مگ افزایش پیدا میکنه
151463
انتظار دارم که با بستن پنجره دوم (فرم موقت، فرم دوم) مجددا رم استفاده شده به همان مقدار اول 76 مگ بازگرده ولی این طور نمیشه-- از using , dispose , و همچنین try-finally dispose هم استفاده میکنم ولی باز هم هیچ تغییری نمیبینم و بعد از بسته شدن فرم دوم همچنان رم به اندازه 122 استفاده میشه و تازه هر بار پنجره دوم(فرم داخلی برنامه) را باز میکنم و میبندم دوباره هی رم استفاده شده زیاد میشه تا یجایی بعد از 380 مگا بایت دیگه زیاد نمیشه هر چی هم باز و بسته میکنم
151464
من کلا نمیفهمم چه اتفاقی داره میفته !! مگه نباید با using بعد از اینکه فرم داخلی بسته شد رم ازاد بشه؟؟
کلاس ارتباطی با دیتا بیس در لایه Datalayer:
public class UnitOfWork : IDisposable {
private MyFriendsRepository _myFriendsRepository;
mydatabaseEntities MyDB = new mydatabaseEntities();
public MyFriendsRepository myFriendsRepositoryProperty
{
get
{
this._myFriendsRepository = new MyFriendsRepository(MyDB);
return _myFriendsRepository;
}
}
public void Dispose()
{
MyDB.Dispose();
}
}
کدهای مربوط به فرم اول (فرم اصلی برنامه) یک قسمت برای لود شدن فرم اصلی - یک قسمت برای Button مربوط به فرم موقت (فرم دوم - پنجره دوم)
private void MainForm_Load(object sender, EventArgs e) {
UnitOfWork unitOfWorkInstance = new UnitOfWork();
dgvMainForm.DataSource = unitOfWorkInstance.myFriendsRepositoryProperty.Get AllFriends();
}
private void ButtonTemp_Click(object sender, EventArgs e)
{
using (TempForm tempFormInstance = new TempForm())
{
tempFormInstance.ShowDialog();
}
}
کد مربوط به فرم دوم (فرم موقت)
private void TempForm_Load(object sender, EventArgs e) {
using (UnitOfWork unitOfWorkInstance = new UnitOfWork())
{ dgvTempForm.DataSource = unitOfWorkInstance.myFriendsRepositoryProperty.Get AllFriends(); }
}