1

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

1 回答 1

1

对您的问题的简短回答是,是的,它会导致内存问题,因为您不会通过简单地调用表单来释放分配给表单的内存.Hide()

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

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

于 2013-09-17T19:35:55.390 回答