我有一个Windows窗体,用于从软件应用程序内部查看图片。用户选择某些内容并点击提示表单的工具。当他们选择另一个项目来查看另一个图像时,会显示另一个表单窗口,我使用以下内容隐藏上一个表单。
我的问题是这会引起内存问题还是其他什么问题?假设在用户的观看会话期间可能会打开并隐藏50个表单。
private void ShowImageViewer()
{
FormCollection fc = Application.OpenForms;
foreach (Form frm in fc)
{
if (frm.Visible)
{
frm.Hide();
}
}
ImageViewer viewer = new ImageViewer(this, parcelID);
viewer.Show();
viewer.Focus();
}
答案 0 :(得分:1)
您的问题的简短答案是肯定的,它会导致内存问题,因为您只需在表单上调用.Hide()
就不会释放分配给表单的内存。
真正的问题是为用户选择的每个图像创建新表单。您最终会遇到内存问题,因为根据用户使用系统的方式,您可能会有数百个或更多表单。
当用户选择新图片或重新使用相同表单并更新.Close()
对象中显示的图片时,请在表单上调用ImageViewer
。