HttpRuntimeカスタムタイミング更新キャッシュ
9362 ワード
キャッシュ更新クラスは次のとおりです.
/// <summary>
///
/// </summary>
/// <typeparam name="T"> </typeparam>
public class UpdateCacheHelper<T>
{
/// <summary>
///
/// </summary>
private System.Threading.Timer timer;
/// <summary>
/// ( )
/// </summary>
private int saveTime;
/// <summary>
/// ( )
/// </summary>
private int intervalTime = 10 * 1000;
/// <summary>
///
/// </summary>
private string cacheKey = string.Empty;
/// <summary>
///
/// </summary>
private Delegate dele;
/// <summary>
///
/// </summary>
private object[] objs;
/// <summary>
///
/// </summary>
/// <param name="dele"> </param>
/// <param name="cacheKey">key</param>
/// <param name="saveTime"> ( )</param>
/// <param name="intervalTime"> ( )</param>
/// <param name="objs"> </param>
public UpdateCacheHelper(Delegate dele, string cacheKey, int saveTime, int intervalTime, params object[] objs)
{
this.dele = dele;
this.cacheKey = cacheKey;
this.saveTime = saveTime;
this.intervalTime = intervalTime * 1000;
this.objs = objs;
this.timer = new System.Threading.Timer(new System.Threading.TimerCallback(this.CheckDependencyCallBack), this, 0, this.intervalTime);
}
/// <summary>
///
/// </summary>
/// <returns> </returns>
public T GetData()
{
string assemblyName = this.dele.Target.GetType().Assembly.FullName;
string typeName = this.dele.Target.GetType().FullName;
object instance = Assembly.Load(assemblyName).CreateInstance(typeName);
MethodInfo methodInfo = this.dele.Method;
return (T)methodInfo.Invoke(instance, this.objs);
}
/// <summary>
///
/// </summary>
/// <param name="sender">sender</param>
private void CheckDependencyCallBack(object sender)
{
T newData = this.GetData();
HttpRuntime.Cache.Insert(this.cacheKey, newData, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, this.saveTime, 0), CacheItemPriority.NotRemovable, null);
}
}