2

我创建了一个小应用程序,它基本上存在于系统托盘中,用户只需要在极少数情况下打开实际的应用程序。问题是,一旦用户第一次打开应用程序,内存就会充满大量数据(用于数据网格、树视图等的 WPF UI)。但是随后用户将再次最小化应用程序,并且大部分时间它都会坐在那里。唯一始终可访问的 UI 是托盘图标的上下文菜单。

所以事情就是这样:每次最小化应用程序时,我如何处理整个 UI?我在 WPF 中尝试了几件事,但我永远无法摆脱 UI 对象,因为 WPF 保留对它们的引用。

我想要的是:打开应用程序(加载 UI)-> 最小化到托盘-> 整个 UI 被处理,剩下的唯一内存是业务逻辑使用的内存......下次从托盘打开应用程序:整个 UI被重建。

非常感谢您!

4

1 回答 1

0

我想你可能有一个隐藏的主窗口,当它从托盘恢复时,它将打开包含整个 UI 的 Window2,当你最小化应用程序时,可以关闭 Window2(因此被处理)。或者也许可以在双击托盘图标或通过上下文菜单时直接打开 Window2...

但这仍然可能不会给出预期的结果,因为垃圾收集器通常不会费心收集垃圾,除非内存子系统有压力(例如,您的可用内存用完了)。

尽管我已经看到垃圾收集器(或者它可能是 Windows 功能)在最小化时将大部分应用程序分页到交换文件。但我还没有深入研究这个,所以我不能说究竟是什么或什么时候导致了这个。

于 2010-08-19T17:01:52.960 回答