1

Windows 7 で VS 2010 Ultimate を実行していて、MemoryCache (System.Runtime.Caching) を使用しようとしていますが、何らかの理由で、メソッドが終了するとすぐにキャッシュがクリアされ、メソッドを再実行すると、試行されます。新しいものを作成します。MSDN ドキュメントから使用しているコードは次のとおりです。

           ObjectCache cache = MemoryCache.Default;
    string fileContents = cache["filecontents"] as string;

    if (fileContents == null)
    {
        CacheItemPolicy policy = new CacheItemPolicy();

        List<string> filePaths = new List<string>();
        filePaths.Add("c:\\Windows\\Enterprise.xml");

//      policy.ChangeMonitors.Add(new HostFileChangeMonitor(filePaths));
        policy.Priority = CacheItemPriority.NotRemovable;
        policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(3600);

        // Fetch the file contents.
        fileContents =
            File.ReadAllText("c:\\Windows\\Enterprise.xml");

        cache.Set("filecontents", fileContents, policy);
    }

        Console.WriteLine(fileContents);

このコードは Console Main メソッドにあります。

驚くべきことは、QTP から使用しているラッパー C# 4.0 アセンブリがあり、それが完全にうまく機能していることです。キャッシュは、QTP の実行ごとに保持されます。

助けてください。

4

1 に答える 1

1

の有効期間はMemoryCacheVisual Studio とはまったく関係ありません (「Visual Studio IDE はまだ開いている」というコメントで言及しました。

キャッシュはプログラムの実行中にのみ使用できるため、アプリケーションを停止して再起動するたびに、キャッシュは実際には空になります。より具体的には、アプリケーションの起動時に作成され、アプリケーションの終了時に破棄されるAppDomainのコンテキスト内に存在します。

アプリケーションが 1 時間以上実行されている場合にのみ、そのポリシーが有効になります。

于 2013-06-20T03:30:26.347 に答える