【发布时间】:2013-03-24 07:17:42
【问题描述】:
用 C# (Forms) 编写的应用程序在一段时间后会变慢(尤其是从睡眠模式唤醒后,也可能在 30 分钟后)。
应用程序具有以下结构:
按下按钮 1 或按钮 2 时主面板会发生变化。 如果单击按钮 2,则实际面板中会显示子菜单和子面板:
有趣的是,应用程序只需要很长时间就可以在面板 1 和面板 2 之间切换(即按下按钮 1 或按钮 2)。按下按钮 2 并加载面板后,子面板之间的切换(如果按下按钮 2a、2b 和 2c)很快。
正如 Davin Tryon 在他对这篇文章的回答中所建议的那样 >Long running application slows down
但这些价值对我来说似乎并不高......
编辑 03/23/13 下午 6:11: DasKrümelmoster 询问 Button/Panel 1 和 Button/Panel 2 之间的切换代码:
activePanel.Hide();
activePanel = getPanelFromSelectedMenuElement(selectedMenuElement); // would return "panel2";
在子面板之间切换时基本相同。
【问题讨论】:
-
能否提供一些按钮 2 中的“切换代码”?
-
参见 OP(编辑 1)
-
+1 确实有。我已经从我的应用程序中删除了所有计时器,现在它运行顺利。如何释放所有非托管资源?我试图处理我所有的对象,但这并没有解决问题......
-
如果您有 VS Premium 或 Ultimate,您可以尝试 代码分析 功能,尤其是 Microsoft.Reliability 规则。如果可以,请分享计时器代码。要定位错误,请将计时器设置为更短的间隔并一次禁用一个。