所以我已经在这个主题上浏览了一段时间,这是最好的方法。我正在使用扫描枪并为其构建一个应用程序。我的应用程序有许多不同的菜单屏幕,如图所示。 我的应用程序似乎冻结在一个扫描枪而不是另一个扫描枪虽然他们有几乎完全相似的硬件。我想也许是因为我没有关闭我创建的任何表格。我在调用它时在表单中构建实例,然后调用show方法。
AssetsMenu.GetInstance()显示();
当我完成表单或希望显示下一个表单时,我在该表单中调用Hide方法表单。
this.Hide();
我是否认为这是错误的,或者是重用表单的最佳方法。我应该使用AssetsMenu.GetInstance()。Close()而只是在我需要再次使用时创建一个新表单吗?
请帮忙......
答案 0 :(得分:1)
这真的是一个记忆问题。你应该关闭它们吗?如果你没有足够的内存来同时拥有它们,那么是的。通常我会在我的所有应用程序中运行“内存服务”,这些应用程序将输出到调试内存条件,特别是当它们变得严重时。我建议做类似的事情,特别注意设备的内存负载。打开所有表格并查看它的位置。如果你真的很高(比如95%以上)那么你肯定会有问题。
也可能有许多其他事情正在吸收内存,所以它可能根本不与Form有关。
就个人而言,我会使用堆栈作为表单,并且当用户备份时,我会关闭并处理它们,但我工作的大多数应用程序都有更多的表单,而你正在展示的。
最后,您将需要在您的设备上使用您的应用进行个人资料和测试。没有严格的规则表明你必须关闭所有表格。
答案 1 :(得分:0)
我的CF 4.5应用程序遇到了同样的问题。我没有使用多种形式,只有一个表格和几个不可见的"面板"相互之间(你可以在VS工具箱中找到它们)。在应用程序开始时,只有" LogIn"面板(以及它的控件)是可见的。用户单击“登录”按钮并验证后,我将此面板设置为不可见,下一个面板可见,依此类推......
我不认为这是我最有效的方式,但它解决了我的问题..