我正在调试一个具有三个表单的简单应用程序,我发现当我关闭一个表单,然后我再次打开(单击显示相应表单的按钮)时,代表该表单的对象被再次创建。我认为这会不必要地消耗资源。
那么,如何在程序执行时只创建所有表单的一个实例以供使用?
您应该能够连接到关闭事件,您所需要的只是将要关闭的表单设置为隐藏而不是实际关闭它。然后表单将通过 Singleton 提供,它负责表单本身的初始化和呈现。
请注意,您可能仍希望释放您隐藏的表单使用的任何其他资源,例如文件和/或连接。
作为旁注,请记住,当您不使用表单时将它们保存在内存中会增加应用程序的内存占用。
你所描述的听起来像单例模式。
private MyForm() {
}
private static MyForm _instance;
public static MyForm Instance => _instance ?? (_instance = new MyForm());
有可能,因为构造函数是私有的,所以设计师开始搞砸了。此外,您不能再处理/关闭表单了。这迫使您使表单不可见而不是摆脱它们