0

キャッシュされた要素のアイテムは、特定の時間、たとえば午後11時59分59秒に1日1回削除する必要があります。キャッシュには、一定期間使用できる
プロパティがあることを知っています。次のコードを使用してキャッシュに値を設定していますabsoluteExpiration

   public static Collection<CProductMakesProps> GetCachedSmartPhoneMake(HttpContext context)
    {
        var allMake = context.Cache["SmartPhoneMake"] as Collection<CProductMakesProps>;
        if (allMake == null)
        {
            allMake = new CModelRestrictionLogic().GetTopMakes();
            context.Cache.Insert("SmartPhoneMake", allMake, null, 
            DateTime.Now.AddHours(Int32.Parse(ConfigurationManager.AppSettings["MakeCacheTime"])),
            Cache.NoSlidingExpiration);
        }
        return allMake;
    } 

しかし、キャッシュが期限切れになる正確な時間を設定するにはどうすればよいですか。時間変数を計算してを設定する
必要がありますか、それとも他の方法がありますか。manipulatetime differenceabsoluteExpiration

4

2 に答える 2

0

以下のように関数を作成する方法を見つけました

    private static double GetTimeLeft()
    {
        //create a time stamp for tomorow 00:10 hours
        var tomorrow0010Minute = DateTime.Now.AddDays(1).Date.AddMinutes(10);
        return Math.Round((tomorrow0010Minute - DateTime.Now).TotalHours);
    }

これにより、次のように関数で使用した double 値が得られます

public static Collection<CProductMakesProps> GetCachedSmartPhoneMake(HttpContext context)
{
    var allMake = context.Cache["SmartPhoneMake"] as Collection<CProductMakesProps>;
    if (allMake == null)
    {
        allMake = new CModelRestrictionLogic().GetTopMakes();
        context.Cache.Insert("SmartPhoneMake", allMake, null, 
        DateTime.Now.AddHours(GetTimeLeft()),
        Cache.NoSlidingExpiration);
    }
    return allMake;
} 

そして完了:)

于 2013-02-06T07:19:10.000 に答える
0

SOでこの回答を確認してください。ASP.NET タイマー コントロールを使用して、特定の時刻にイベントを発生させます。この値を構成エントリとして保持することをお勧めします。また、その中には他の提案もあります。

.NET Timer クラスを使用して特定の時間にイベントをトリガーする方法は?

于 2013-02-04T06:54:29.013 に答える