使用form.hide会多次导致内存问题等

时间:2013-09-17 19:25:13

标签: c# winforms visual-studio-2010 .net-4.0

我有一个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();   
}

1 个答案:

答案 0 :(得分:1)

您的问题的简短答案是肯定的,它会导致内存问题,因为您只需在表单上调用.Hide()就不会释放分配给表单的内存。

真正的问题是为用户选择的每个图像创建新表单。您最终会遇到内存问题,因为根据用户使用系统的方式,您可能会有数百个或更多表单。

当用户选择新图片或重新使用相同表单并更新.Close()对象中显示的图片时,请在表单上调用ImageViewer