という名前のヘルパー クラスに静的メソッドがありますhelper.getdiscount()
。このクラスは ASP.NET フロントエンド コードであり、UI ページで使用されます。
このメソッド内では、ASP.NET キャッシュにデータがあるかどうかを確認してから返します。そうでない場合は、サービス呼び出しを行い、結果をキャッシュに格納してからその値を返します。
複数のスレッドが同時にアクセスしている可能性があることを考えると、これは問題になりますか?
if (HttpContext.Current.Cache["GenRebateDiscountPercentage"] == null)
{
IShoppingService service = ServiceFactory.Instance.GetService<IShoppingService>();
rebateDiscountPercentage= service.GetGenRebateDiscountPercentage().Result;
if (rebateDiscountPercentage > 0)
{
HttpContext.Current.Cache.Add("GenRebateDiscountPercentage", rebateDiscountPercentage, null, DateTime.Now.AddDays(1), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Normal, null);
}
}
else
{
decimal.TryParse(HttpContext.Current.Cache["GenRebateDiscountPercentage"].ToString(), out rebateDiscountPercentage);
}
これで問題ないか、またはより良いアプローチを使用できるかどうかをお知らせください。