有没有办法在关闭并再次打开时不重新创建表单实例?
Is there any way to not re-create the instance of a form when is closed and opened again?
我正在调试一个具有三个表单的简单应用程序,我发现当我关闭一个表单然后再次打开(单击显示相应表单的按钮)时,表示该表单的对象再次创建。
我认为这会不必要地消耗资源。
那么,如何才能在程序执行时只创建所有表单的一个实例?
您应该能够连接到关闭事件,您所需要的只是将要关闭的表单设置为隐藏,而不是实际关闭它。然后可以通过单例使用该表单,单例负责表单本身的初始化和呈现。
请注意,您可能仍想释放您隐藏的表单使用的任何其他资源,例如文件 and/or 连接。
附带说明一下,请记住,在不使用表单时将其保存在内存中会增加应用程序的内存占用。
您所描述的听起来像是单例模式。
private MyForm() {
}
private static MyForm _instance;
public static MyForm Instance => _instance ?? (_instance = new MyForm());
有可能,Designer开始乱来,因为Constructor是private的。此外,您不能再 Dispose/Close 表格了。这迫使您使表单不可见而不是摆脱它们
我正在调试一个具有三个表单的简单应用程序,我发现当我关闭一个表单然后再次打开(单击显示相应表单的按钮)时,表示该表单的对象再次创建。 我认为这会不必要地消耗资源。
那么,如何才能在程序执行时只创建所有表单的一个实例?
您应该能够连接到关闭事件,您所需要的只是将要关闭的表单设置为隐藏,而不是实际关闭它。然后可以通过单例使用该表单,单例负责表单本身的初始化和呈现。
请注意,您可能仍想释放您隐藏的表单使用的任何其他资源,例如文件 and/or 连接。
附带说明一下,请记住,在不使用表单时将其保存在内存中会增加应用程序的内存占用。
您所描述的听起来像是单例模式。
private MyForm() {
}
private static MyForm _instance;
public static MyForm Instance => _instance ?? (_instance = new MyForm());
有可能,Designer开始乱来,因为Constructor是private的。此外,您不能再 Dispose/Close 表格了。这迫使您使表单不可见而不是摆脱它们