Я программирую систему инвентаризации в Windows формах, используя C#, и я разработал ее с помощью панели администратора . Я использую MDI и загружаю продукты, нажимая кнопку products .
![enter image description here](https://i.stack.imgur.com/jmHWF.png)
When loading the child form everything works ok:
введите описание изображения здесь
Но когда я загружаю продукты снова и снова, я заметил, что в Windows Диспетчере задач программа потребляет слишком много памяти каждый раз, когда я загружаю продукты или нажимаю кнопку продуктов . Потребление памяти очень велико.
Это мой код:
загрузка дочерней формы от родителя:
public partial class Layout2 : BaseContext
{
public Layout2()
{
InitializeComponent();
}
//loads the products form
private void ventas_boton_Click(object sender, EventArgs e)
{
var frm = new Inventario();
frm.TopLevel = false;
frm.FormBorderStyle = FormBorderStyle.None;
panel3.Controls.Add(frm);
frm.WindowState = FormWindowState.Maximized;
frm.Visible = true;
}
}
материал дочерней формы
public partial class Inventario : BaseContext
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
CargarLista();
}
public virtual void CargarLista()
{
var productos = _inventarioRepository.GetList();
ListaProductos.DataSource = productos;
}
}
Базовый контекст
public class BaseContext: Form
{
// contexto base, todos los forms deben heredar esta clase por orden.
private bool _disposed = false;
protected Context _context { get; set; }
public BaseContext()
{
_context = new Context();
}
protected override void Dispose(bool disposing)
{
if (_disposed) return;
if (disposing) _context.Dispose();
_disposed = true;
base.Dispose(disposing);
}
}
Я думаю, что var frm = new Inventario();
- это вызывая проблему, потому что он создает новый объект каждый раз, когда я нажимаю кнопку, чтобы отобразить форму.
Моя проблема проста, но я новичок в Windows Forms. Как решить эту проблему потребления памяти каждый раз, когда я открыть или обновить форму товаров?