2

基本的にシステムトレイに存在する小さなアプリケーションを作成しました。ユーザーは実際のアプリケーションを開く必要がある場合はほとんどありません。問題は、ユーザーが初めてアプリケーションを開くと、メモリが大量のデータ (データグリッド、ツリービューなどの WPF UI) でいっぱいになることです。しかしその後、ユーザーはアプリケーションを再び最小化して、ほとんどの時間そこにとどまります。常にアクセスできる唯一の UI は、トレイ アイコンのコンテキスト メニューです。

ここに問題があります:アプリケーションが最小化されるたびにUI全体を破棄するにはどうすればよいですか? WPF でいくつかのことを試しましたが、WPF が UI オブジェクトへの参照を保持しているため、UI オブジェクトを取り除くことはできません。

私が気に入っているのは: アプリケーションを開く (UI がロードされた) --> トレイに最小化 --> UI 全体が破棄され、残っているメモリはビジネス ロジックによって使用されるメモリだけです... 次回アプリケーションがトレイから開かれるとき: UI 全体再建されます。

事前にどうもありがとうございました!

4

1 に答える 1

0

メインウィンドウを非表示にすることができ、それがトレイから復元されると、UI全体を含むWindow2が開き、アプリを最小化すると、Window2を閉じることができます(破棄されます)。または、トレイ アイコンをダブルクリックするか、コンテキスト メニューから直接 Window2 を開くこともできます...

しかし、メモリ サブシステムに負荷がかかっていない限り (たとえば、空きメモリが不足している場合など)、ガベージ コレクタは通常ガベージ コレクションを行わないため、これでも望ましい結果が得られない可能性があります。

ガベージ コレクター (または Windows の機能かもしれません) が最小化されているときに、ほとんどのアプリをスワップ ファイルにページアウトするのを見たことがありますが。しかし、私はこれを深く調べていないので、正確にいつ、何が原因なのかはわかりません。

于 2010-08-19T17:01:52.960 に答える