1

私のアプリ(音楽プレーヤー)には、音楽の再生以外のすべてのバックグラウンド操作を停止する「ゲームモード」と呼ばれる機能があり、メモリも解放したいです。

たとえば、そのように設定したウィンドウのベースグリッドに背景画像があります

BaseGrid.Background = new ImageBrush("the image");

GameMode メソッドでは、次のようなことを行います

BaseGrid.Background = null;
GC.Collect();

しかし、最初に呼び出されたとき、2回目にメソッドを呼び出したとき、またはnullingとGC.Collectの間にMessageBox.Showメソッドを貼り付けたときにメモリを解放しませんでした。

だから私の質問はです。バックグラウンドをnullに設定していますが、非同期操作には時間がかかります.GC.Collectは、null化の直後に呼び出されたときに未使用のオブジェクトを認識しませんでしたか、それとも別の問題ですか?

4

2 に答える 2

0

使用する:

GC.WaitForPendingFinalizer();
于 2013-06-20T17:36:03.253 に答える
0

あなたが電話するたびに

    GC.Collect();

あなたは電話するべきです

    GC.WaitForPendingFinalizer()

また

于 2013-06-20T17:34:35.093 に答える