c# - 使用用户控件 C# 时的应用程序性能

标签 c# winforms performance

我正在开发按功能分成几组的大型应用程序。由于每个功能大部分都是独立的(它们都使用相同的数据库,但不同功能之间没有直接交互),我使用用户定义的控件并将它们视为单独的“应用程序”。该应用程序的工作方式是这样的:

  • “根”应用程序仅包含主菜单和 2 个面板。主菜单用于选择功能组。
  • 选择组后(应用程序启动时会自动选择第一个组),该组的功能(用按钮表示)会显示在第一个面板中。
  • 用户选择他/她想要的功能(通过单击适当的按钮),包含“表单”的用户控件显示在第二个面板中。 显示所有用户控件的代码如下所示:

        panel2.Controls.Clear();
        UserControl1 uc1 = new UserControl1();
        uc1.Location = new Point(0, 0);
        panel2.Controls.Add(uc1);
        label6.Text = "User control 1";
    

因此,当用户选择其中一项功能时,应用程序会清除现有控件,并显示所选的控件。 该应用程序运行良好(到目前为止我实现的部分),所以这是我的问题 - 这种方法如何管理计算机资源,主要是内存。具体来说,如果用户使用一种功能,然后切换到另一种功能,.NET 的服务是否会释放先前功能使用的内存(我认为垃圾收集器负责该功能)以及我用来与数据库通信,被关闭? 另外,还有其他一些我应该注意的问题吗? 正如我所说,这些功能正常工作,但我距离对整个应用程序进行全面测试还很遥远(我只在创建它时单独测试每个功能,并且只在我创建它的计算机上进行测试,所以我可以' 将其视为适当的测试)。因此,我担心如果应用程序在较长时间内不断使用,应用程序的性能可能会下降。 我正在使用 VS 2010 (C#) 和 SQL Server 2005 来创建这个应用程序。 如果您有任何建议,请写下来。带着这个问题,由于资源管理不善,我试图阻止应用程序在进入测试和实现阶段后进行重大重建。 谢谢。

最佳答案

垃圾收集器负责释放属于未在任何地方引用的对象的内存。如果您的 Windows 窗体的窗体一次显示许多控件,它们都被当时的窗体以某种方式引用,因此 GC 不会清理这里的任何东西,您需要注意不要加载这些控件中的对象太多。此外,如果在调用 panel2.Controls.Clean() 之前未正确Dispose 控件,则可能会遇到内存问题。

关于c# - 使用用户控件 C# 时的应用程序性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13136157/

相关文章:

c# - 构建具有多个参数的 GroupBy Lambda 表达式

c# - 以编程方式启用/禁用硬件设备

c# - 如何在歌曲中存储评分?

c# - KeyPress\Up\Down 不起作用 - C#

c# - 将大量项目添加到 ListView

performance - 算法的伪多项式分析

c# - Visual Studio 2010 C# "already defined a member with same parameter types error."

mysql - 怎样才能获得最大的值(value)呢?

php - PHP 中的多个 MySQL DB 连接是好是坏?

c# - WinRT 上的 StreamSocket 不接收所有数据