2014-03-12 8 views
0

처리해야하는 큰 이미지 모음이 있습니다.게으른 이미지로드 및 언로드

이미지가 지연로드되었으므로 (Lazy class) 처리가 완료되면 좋을 것입니다.

그러나 Lazy<> 클래스에서 누락 된 것은 초기화 된 객체를 삭제하고 객체를 다시로드하여 메모리를 절약 할 수있는 reset 이벤트입니다.

게으른 메서드가 Clone() 또는 Reset() 메서드 인 경우 좋을 것입니다.

할 수있는 구조가 있습니까 (아니면 직접 작성해야합니까)?

+0

winforms입니까? wpf? 또는 웹? (http://www.appelsiini.net/projects/lazyload) async를로드 할 수있는 데스크톱 (winforms, wpf) –

+0

그냥'lazy.Value'를 처리하고 새로운'Lazy '을 생성 할 수 있습니까? 나는 공장 가치가 새로운 가치에 대해 다를 것이라고 생각한다. 맞습니까? – khellang

+0

아니요. 플랫폼과 관련이 없습니다. 네, 게으른 <>을 처리 할 수는 있지만 다시로드 할 수는 없습니다. – dajuric

답변

0

게으른 값을 아주 쉽게 처리 할 수 ​​있습니다.

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

TIDisposable는 어디 Lazy<T> 가정.

동일한 이미지를 다시 얻을 수 있기 때문에 이미지를 다시 만들 수있는 이유가 확실하지 않습니다. 다른 이미지가 필요하면 다른 공장 위임을 사용하여 Lazy<T>을 새로 작성하십시오.

+0

예, 같은 이미지를 되찾고 싶습니다. 하지만 컬렉션 (예 : List <>)으로 저장할 수없는 이미지가 너무 많아서 점진적으로로드하고 언로드해야합니다. – dajuric

+0

나는 게으른 로딩보다는 캐시를 요구한다고 생각한다. [.NET 캐싱 클래스] (http://msdn.microsoft.com/en-us/library/system.runtime.caching.objectcache.aspx) 중 하나를 살펴 봐야하지만 동일한 동작을하지는 않습니다 방식으로'게으른'. –