我有一個大的圖像集合,我需要處理。懶惰的圖像加載和卸載
如果圖像是懶惰加載的(Lazy class
)並且在處理時被銷燬,那將會很不錯。
但是Lazy<>
類中丟失的是重置事件,該事件處理初始化的對象並使得能夠再次加載對象(以節省內存)。
如果延遲方法有Clone()
或Reset()
方法,那將會很不錯。
是否有任何結構可以做到這一點(或者我必須自己寫)?
我有一個大的圖像集合,我需要處理。懶惰的圖像加載和卸載
如果圖像是懶惰加載的(Lazy class
)並且在處理時被銷燬,那將會很不錯。
但是Lazy<>
類中丟失的是重置事件,該事件處理初始化的對象並使得能夠再次加載對象(以節省內存)。
如果延遲方法有Clone()
或Reset()
方法,那將會很不錯。
是否有任何結構可以做到這一點(或者我必須自己寫)?
你可以很容易地處理一個懶惰的值。
if (lazy.IsValueCreated)
lazy.Value.Dispose();
假設Lazy<T>
其中T
是IDisposable
。
我不確定爲什麼你想讓它再次創建一個圖像,因爲你會得到相同的圖像。如果您需要不同的圖像,請使用不同的工廠代表創建新的Lazy<T>
。
是的,我想要回到相同的圖像。但是有太多的圖片,我不能把它們作爲集合(例如List <>),所以我必須逐步加載和卸載它們。 – dajuric
我認爲你要求緩存,而不是延遲加載。您應該查看[.NET緩存類]之一(http://msdn.microsoft.com/zh-cn/library/system.runtime.caching.objectcache.aspx),但它們的行爲不一樣「懶惰」的方式。 –
它是winforms? WPF?或網絡? (http://www.appelsiini.net/projects/lazyload)用於桌面(winforms,wpf),你可以加載異步 –
難道你不能只處理'lazy.Value'並創建一個新的'懶惰'?我猜工廠func會有不同的新價值,對吧? –
khellang
也沒有。它不是平臺特定的。是的,我可以處理懶惰<>但我無法再加載它。 – dajuric