C# Cache回调函数问题,多次执行该方法,执行两次后就马上执行了onRemove,求助

CacheItemRemovedReason reason;
bool itemRemoved = false;
public CacheItemRemovedCallback onRemove = null;
public void M_Cache(string Key, DataTable Dt)
{
itemRemoved = false;
onRemove = new CacheItemRemovedCallback(this.RemovedCallback);
if (HttpRuntime.Cache[Key] == null)
{
HttpRuntime.Cache.Insert(Key, Dt, null, DateTime.Now.AddSeconds(Untity.Time), TimeSpan.Zero, CacheItemPriority.Default, onRemove);//Untity.Time=60
}
else
{
DataTable NewDt = (DataTable)HttpRuntime.Cache.Get(Key);
object[] obj = new object[NewDt.Columns.Count];
for (int i = 0; i < Dt.Rows.Count; i++)
{
Dt.Rows[i].ItemArray.CopyTo(obj, 0);
NewDt.Rows.Add(obj);
}
HttpRuntime.Cache.Remove(Key);
HttpRuntime.Cache.Insert(Key, NewDt, null, DateTime.Now.AddSeconds(Untity.Time), TimeSpan.Zero, CacheItemPriority.Default, onRemove);
}
}

执行两次,肯定会马上执行onremove。

因为你调用了HttpRuntime.Cache.Remove(Key);把cache删除了。肯定会调用移除通知的方法。追问

HttpRuntime.Cache.Remove(Key);
我把这个删了也不行
HttpRuntime.Cache.Remove(Key);删了之后把下一行的的HttpRuntime.Cache.Insert的改成Add就行了!
还是谢谢你

追答

当要加入的缓存项已经在Cache中存在时,Insert将会覆盖原有的缓存项目,而Add则不会修改原有缓存项。

我把这个给忘了。哎~~~

解决就好。remove也是有关系的。

温馨提示:内容为网友见解,仅供参考
无其他回答

Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答
大家正在搜