2015-11-04 89 views
1

我正在寫一個C#/ XAML UWP應用程序,廣泛使用BitmapImage類並從互聯網上加載大量圖像。從我讀過的這個類以某種方式兌現了它顯示的圖像,並且我已經提出了一些關於這個緩存如何工作的問題:BitmapImage和緩存

a)如果我將圖像從給定Url加載到BitmapImage,假設該圖像根據該Url不會改變,這是否意味着當我關閉應用程序並再次打開並從同一Url加載BitmapImage時,圖像從本地緩存加載? b)如果對a)的答案是肯定的,則意味着圖像在光盤/ microSD /內部存儲器等的某處進行了編碼。我怎樣才能清理這個緩存?當我下載大量圖像時,這個緩存可能佔用很多空間,這是怎麼處理的? c)如果對a)的答案是肯定的,那麼系統如何確定它應該從Url下載圖像還是從緩存中加載圖像?給定的Url下的內容可以改變,所以我猜它必須保留基於圖像內容的某種散列。它能否以顯着的方式影響性能?

回答

2

當您關閉應用程序時,應用程序進入終止狀態,系統將釋放此應用程序的所有已分配資源。如果應用程序在退出之前未將圖像存儲到本地存儲緩存(BitmapCreateOptions設置爲IgnoreImageCache)或在下次開始之前清除緩存,則下次仍需要從Url加載圖像。

答案B:

如果要清除Windows應用商店緩存,還有一個內置的組件來實現這一點:

  1. 按WINKEY + Q來顯示搜索並鍵入WSRESET。

  2. 在結果中,單擊wsreset重置Store Cache。

  3. Windows應用商店將打開並確認緩存已被清除。

的回答你的問題C:

您可以決定何時以及如何通過設置CreateOptions緩存。如果您知道通過URI檢索到的源圖像文件可能隨時間變化,則應該使用BitmapCreateOptions.IgnoreImageCache。默認值是將整個圖像緩存到內存中。

請讓我知道,如果有什麼不清楚。

+0

將設置創建選項BitmapCreateOptions.IgnoreImageCache防止任何緩存發生? – Robert

+0

它只會阻止應用程序從緩存中加載圖像。請參閱此處瞭解更多詳細信息:https://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapcreateoptions(v=vs.110).aspx –