OSDN Git Service

ImageCacheDictionaryからの取得時にはキャッシュの保存を行なわずに、Addされた時にまとめて書き込むように変更
authoranis774 <anis774@users.sourceforge.jp>
Fri, 10 Sep 2010 12:31:55 +0000 (12:31 +0000)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 18 Feb 2012 14:15:22 +0000 (23:15 +0900)
git-svn-id: http://svn.sourceforge.jp/svnroot/tween/trunk@846 e39ad16e-3079-482e-bb30-4b4d378143b6

Tween/ImageCacheDictionary.vb

index 996ba9f..c3c7b37 100644 (file)
@@ -8,6 +8,7 @@ Public Class ImageCacheDictionary
     Private memoryCacheCount As Integer
     Private innerDictionary As Dictionary(Of String, CachedImage)
     Private sortedKeyList As List(Of String)    '古いもの順
+    Private fileCacheProcList As New Queue(Of Threading.ThreadStart)()
 
     Public Sub New(ByVal cacheDirectory As String, ByVal memoryCacheCount As Integer)
         SyncLock Me
@@ -33,6 +34,10 @@ Public Class ImageCacheDictionary
             If Me.innerDictionary.Count > Me.memoryCacheCount Then
                 Me.innerDictionary(Me.sortedKeyList(Me.sortedKeyList.Count - Me.memoryCacheCount - 1)).Chache()
             End If
+
+            While Me.fileCacheProcList.Count > 0
+                Me.fileCacheProcList.Dequeue().Invoke()
+            End While
         End SyncLock
     End Sub
 
@@ -54,7 +59,12 @@ Public Class ImageCacheDictionary
                 Me.sortedKeyList.Remove(key)
                 Me.sortedKeyList.Add(key)
                 If Me.sortedKeyList.Count > Me.memoryCacheCount Then
-                    Me.innerDictionary(Me.sortedKeyList(Me.sortedKeyList.Count - Me.memoryCacheCount - 1)).Chache()
+                    Dim imgObj As CachedImage = Me.innerDictionary(Me.sortedKeyList(Me.sortedKeyList.Count - Me.memoryCacheCount - 1))
+                    Me.fileCacheProcList.Enqueue(Sub()
+                                                     If Me.innerDictionary.ContainsValue(imgObj) Then
+                                                         imgObj.Chache()
+                                                     End If
+                                                 End Sub)
                 End If
                 Return Me.innerDictionary(key).Image
             End SyncLock