2014-03-12 226 views
0

我有一個大的圖像集合,我需要處理。懶惰的圖像加載和卸載

如果圖像是懶惰加載的(Lazy class)並且在處理時被銷燬,那將會很不錯。

但是Lazy<>類中丟失的是重置事件,該事件處理初始化的對象並使得能夠再次加載對象(以節省內存)。

如果延遲方法有Clone()Reset()方法,那將會很不錯。

是否有任何結構可以做到這一點(或者我必須自己寫)?

+0

它是winforms? WPF?或網絡? (http://www.appelsiini.net/projects/lazyload)用於桌面(winforms,wpf),你可以加載異步 –

+0

難道你不能只處理'lazy.Value'並創建一個新的'懶惰'?我猜工廠func會有不同的新價值,對吧? – khellang

+0

也沒有。它不是平臺特定的。是的,我可以處理懶惰<>但我無法再加載它。 – dajuric

回答

0

你可以很容易地處理一個懶惰的值。

if (lazy.IsValueCreated) 
    lazy.Value.Dispose(); 

假設Lazy<T>其中TIDisposable

我不確定爲什麼你想讓它再次創建一個圖像,因爲你會得到相同的圖像。如果您需要不同的圖像,請使用不同的工廠代表創建新的Lazy<T>

+0

是的,我想要回到相同的圖像。但是有太多的圖片,我不能把它們作爲集合(例如List <>),所以我必須逐步加載和卸載它們。 – dajuric

+0

我認爲你要求緩存,而不是延遲加載。您應該查看[.NET緩存類]之一(http://msdn.microsoft.com/zh-cn/library/system.runtime.caching.objectcache.aspx),但它們的行爲不一樣「懶惰」的方式。 –