2012-03-06 33 views
0

私はC#WPFアプリケーションを持っています。私は最近、Microsoftエンタープライズライブラリキャッシングオプションを発見しました。EnterpriseLibraryアプリケーションの再起動後にCacheManagerが終了しましたか?

私は自分のアプリケーションに次のコードを追加:

ICacheManager oCacheManager = CacheFactory.GetCacheManager(); 
if (!oCacheManager.Contains("TESTING")) 
{ 
    // 
    // Code which populates myDictionary object 
    // 

    oCacheManager.Add("TESTING", myDictionary); 

    if (oCacheManager.Contains("TESTING")) 
     Console.WriteLine("Stored!"); 
} 
else // below never gets hit 
{ 
    Console.WriteLine("Found It!"); 
    CachedObjects = (Dictionary<string, object>)oCacheManager.GetData("TESTING"); 
} 

にアプリケーションが実行されるたびに、それが「ストアド!」を出力します。それは決して "Found It!"を出力しません。これは、アプリケーションが終了するたびにキャッシュが破棄されることを意味します。後続の各時間にキャッシュを見つけて読み込むように、永続化する方法はありますか?

おかげで、キャッシュされたオブジェクトの

答えて

0

デフォルトのストレージは、実際のオブジェクトのみをメモリにキャッシュされていることを意味NullBackingStore、です。その他のオプションは、IsolatedStorageBackingStore(ユーザーの隔離されたストレージにディスクに書き込まれます)とDatabaseBackingStore(データベースに書き込まれます)です。両方ともNullBackingStoreよりもはるかに遅くなりますが、データは再起動後も残ります。

+0

ありがとうございました。分かりました。 Isolated Storageは基本的にオブジェクトが大きすぎると言っています(「内部配列はInt32.MaxValue要素を超えて拡張できません」)、データベースストレージはネットワークの向こう側にあり、キャッシュの目的を無効にします。だから、私はそれがうまくいかないと思う。助けてくれてありがとう! – Nullqwerty

関連する問題