ステファンウィックは、私たちが、私は彼の例をテストしているWindowsPhoneで画像キャッシュをクリアする方法7. UriSourceをnullに設定しても機能しません! WP7でイメージキャッシュをクリアするには、他にどのような方法がありますか?プロジェクト(ImageTips.zip) -
<code>
BitmapImage bitmapImage = image.Source as BitmapImage;
bitmapImage.UriSource = null;
image.Source = null;
http://blogs.msdn.com/b/swick/archive/2012/04/05/10151249.aspx?CommentPosted=true#commentmessage
のようなコードを使用してWP7で画像キャッシュをクリアすることができ、彼のブログに書いています - - そして私は、上記のコードは動作しないと言うことができます---キャッシュされたイメージのメモリを解放せず、アプリケーションのキャッシュされたイメージを削除しません。
UriSourceをnullに設定すると、ページCaching.xamlのメモリが解放されますが、MainPage.xamlに戻るとメモリが解放されないことがわかります---メモリが増加しています!!!私の観察を再現するために、我々はステファンのプロジェクトを使用することができることを確認するには
---彼のブログでImageTips.zip ...
---次のことができます。メインページにする 1.追加コードあなたのCaching.xamlページ上のような現在のメモリ値を表示するための.xaml:
<tab>
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(500);
timer.Start();
timer.Tick += delegate
{
GC.Collect();
tbMemory.Text = string.Format("Memory: {0} bytes", DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage"));
};
</code>
- は、アプリケーションを実行します。初めてMainPage.xamlに移動すると、メモリの値はほぼ9676448バイトに等しくなります。
- クリックすると、Caching.xaml(Image caching)に移動します。メモリの値はほぼ9011200バイトです。
- ボタンをクリックします。画像表示するショー - メモリの値が413696のバイトをdissapearedてき避けイメージキャッシュ(キャッシュされた画像をクリアする)とクリアその押しボタンの後--- 10090144のバイト....だから、上のほぼ12996608バイト
- クリックに等しいですか? ?? (10090144 - 9676448 = 413696バイト)
ボタンをクリックすると、MainPage.xaml --- 11828248 bytesに戻ることができます。ただし、Caching.xamlにナビゲートする前の以前の値は9676448バイトでした...だから、 2151800バイト????
Caching.xaml(画像を表示してキャッシュで画像を消去する)を20回移動し、MainPage.xamlに戻ると、使用メモリは3.3MBに増加します。
私のアプリケーションでこの問題が発生し、解決方法がわかりません。
Windows phone 7でイメージキャッシュをクリアするには、他にどのような方法がありますか? 、またはUriSourceをnullに設定してイメージキャッシュをクリアすると、前のページに戻るときにメモリが解放されません。
ありがとうございました。
私は窓の電話についてゼロの隣に知っているので、これは答えではなくコメントとして残しています。これがWindowsデスクトップアプリケーションの場合は、GCがまだ実行されていないと言えるでしょう。したがって、OOMの表示を開始しない限り、心配することはありません。そのアドバイスがWindowsの電話機に保持されているかどうかは不明です。 –
WP7は、グローバルルート上の参照に何らかの形で保持されている.NETの「メモリリーク」を起こしやすくなりますが、ほとんど同じことです。 –