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

CacheItemRemovedReasonreason;boolitemRemoved=false;publicCacheItemRemovedCallbackonRe... 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);
}
}
展开
 我来答
handangaoyang
2014-04-10 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:922万
展开全部
执行两次,肯定会马上执行onremove。

因为你调用了HttpRuntime.Cache.Remove(Key);把cache删除了。肯定会调用移除通知的方法。
追问
HttpRuntime.Cache.Remove(Key);
我把这个删了也不行
HttpRuntime.Cache.Remove(Key);删了之后把下一行的的HttpRuntime.Cache.Insert的改成Add就行了!
还是谢谢你
追答
当要加入的缓存项已经在Cache中存在时,Insert将会覆盖原有的缓存项目,而Add则不会修改原有缓存项。

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

解决就好。remove也是有关系的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式