我创建了一个小应用程序,基本上存在于系统托盘中,用户只需要在很少的情况下打开实际的应用程序。 问题是,一旦suer第一次打开应用程序,内存就会充满大量数据(数据网格,树视图等的WPF UI)。 但是,然后用户将再次最小化应用程序,并且它将在大多数时间坐在那里。 唯一可以访问的用户界面是托盘图标的上下文菜单。
所以这就是事情: 每次应用程序最小化时,如何处理WHOLE UI?我在WPF中尝试过几个东西但是我永远无法摆脱UI对象,因为WPF会保留对它们的引用。
我喜欢的是:打开应用程序(加载UI) - >最小化到托盘 - >处理整个UI,剩下的唯一内存是业务逻辑使用的...下次从托盘打开应用程序:重建整个UI。
非常感谢你!
答案 0 :(得分:0)
我想你可以有一个隐藏的主窗口,当它从托盘恢复时,它将打开包含WHOLE UI的Window2,当你最小化应用程序时,Window2可以关闭(因此处理)。或者也许可以在双击托盘图标或通过上下文菜单时直接打开Window2 ...
但是这仍然可能无法产生预期的结果,因为垃圾收集器通常不会为收集垃圾而烦恼,除非内存子系统受到压力(例如,你的可用内存不足)。
虽然我已经看到了垃圾收集器(或者它可能是Windows的一个特性),当它被最小化时,会将大部分应用程序分配给交换文件。但我没有深入研究这一点,所以我无法说出究竟是什么原因造成的。