OSDN Git Service

ImageCache.DownloadImageAsync() での再読み込み時にキャッシュ内の画像をDisposeする
authorKimura Youichi <kim.upsilon@bucyou.net>
Sun, 9 Feb 2014 04:47:05 +0000 (13:47 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sun, 9 Feb 2014 04:47:45 +0000 (13:47 +0900)
OpenTween/ImageCache.cs

index 532e4ab..9f88eea 100644 (file)
@@ -97,12 +97,20 @@ namespace OpenTween
                 Task<MemoryImage> cachedImageTask = null;
                 lock (this.lockObject)
                 {
-                    if (force)
-                        this.innerDictionary.Remove(address);
-
                     if (this.innerDictionary.ContainsKey(address))
                         cachedImageTask = this.innerDictionary[address];
 
+                    if (force && cachedImageTask != null)
+                    {
+                        this.innerDictionary.Remove(address);
+
+                        if (cachedImageTask.Status == TaskStatus.RanToCompletion)
+                            cachedImageTask.Result.Dispose();
+
+                        cachedImageTask.Dispose();
+                        cachedImageTask = null;
+                    }
+
                     if (cachedImageTask != null)
                         return cachedImageTask;