2010-06-01 145 views
2

我創建了一個基本上存在於系統托盤中的小應用程序,用戶只需要在極少數情況下打開實際應用程序。 問題是,當suer第一次打開應用程序時,內存中充滿了大量的數據(用於datagrids,treeviews等的WPF UI)。 但是然後用戶會再次將應用程序最小化,並且大部分時間都會在那裏。 始終可以訪問的唯一UI是托盤圖標的上下文菜單。系統托盤應用程序和內存佔用

因此,這裏是事情: 如何在每次應用程序最小化時處理整個UI?我已經嘗試了WPF中的幾件事,但我永遠無法擺脫UI對象,因爲WPF保持對它們的引用。

我會喜歡的是:打開的應用程序(用戶界面已加載) - >最小化到托盤 - >整個用戶界面已處理,剩下的唯一內存就是由業務邏輯使用的...下次打開應用程序托盤:整個UI被重建。

非常感謝您提前!

回答

0

我想你可以有一個隱藏的主窗口,當它從托盤恢復時,它將打開包含整個UI的Window2,當你最小化應用程序時,Window2可以關閉(因此處置)。或者,也許可以直接雙擊托盤圖標或通過上下文菜單打開Window2 ...

但是,這仍然可能不會給出所需的結果,因爲垃圾收集器通常不會收集垃圾,除非有內存子系統的壓力(例如,你的內存不足)。

儘管我已經看到垃圾收集器(或者它可能是Windows功能),但在最小化時將大部分應用程序調出到交換文件。但我沒有深入研究,所以我不能說什麼或什麼時候導致這種情況。