我有一个大的图像集合,我需要处理。懒惰的图像加载和卸载
如果图像是懒惰加载的(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