有没有办法在关闭并再次打开时不重新创建表单的实例?

Posted

技术标签:

【中文标题】有没有办法在关闭并再次打开时不重新创建表单的实例?【英文标题】:Is there any way to not re-create the instance of a form when is closed and opened again? 【发布时间】:2016-10-18 19:44:40 【问题描述】:

我正在调试一个具有三个表单的简单应用程序,我发现当我关闭一个表单,然后我再次打开(单击显示相应表单的按钮)时,会创建代表表单的对象再次。 我认为这会不必要地消耗资源。

那么,如何在程序执行时只创建所有表单的一个实例?

【问题讨论】:

【参考方案1】:

您所描述的内容听起来像是单例模式。

private MyForm() 



private static MyForm _instance;
public static MyForm Instance => _instance ?? (_instance = new MyForm());

有可能,因为构造器是私有的,所以设计器开始搞乱。此外,您不能再处理/关闭表单了。这迫使您使表单不可见而不是摆脱它们

【讨论】:

【参考方案2】:

您应该能够连接到关闭事件,您所需要的只是将要关闭的表单设置为隐藏而不是实际关闭它。然后表单将通过 Singleton 提供,它负责表单本身的初始化和呈现。

请注意,您可能仍希望释放您隐藏的表单使用的任何其他资源,例如文件和/或连接。

附带说明,请记住,在不使用表单时将它们保存在内存中会增加应用程序的内存占用。

【讨论】:

是的,根据需求仔细评估是一个重点。谢谢。

以上是关于有没有办法在关闭并再次打开时不重新创建表单的实例?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个倒数计时器,当屏幕关闭时停止并“等待”,重新打开时恢复。安卓

底部对话框打开时如何防止键盘关闭?

Activity 关闭并重新打开时避免服务回调

当通过链接或后退按钮打开时,强制 JSF 刷新页面/视图/表单

位置服务关闭和打开时地理定位不起作用

重新打开时 JQuery UI 对话框没有正确调整大小?