2014-03-12 187 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),但它们的行为不一样“懒惰”的方式。 –