instance.RemoveObject(xpath, false);
}
}
}
cachefileoldchange = cachefilenewchange;
dsSrc.Dispose();
}
}
}
return instance;
}
2.另外需要说明的是在4月份时缓存机制出现了一些问题,比如缓存数据丢失以及在.net2下
的死循环的问题,后来在雪人的建议下采用每个缓存都有缓存标志来解决数据丢失的问题。也就
是如下的代码段:
1 //添加时
2 public virtual void AddObject(string xpath, DataTable dt)
3 {
4 lock(lockHelper)
5 {
6 if(dt.Rows.Count>0)
7 {
8 AddObject(xpath+"flag", CacheFlag.CacheHaveData);
9 }
10 else
11 {
12 AddObject(xpath+"flag", CacheFlag.CacheNoData);
13 }
14 AddObject(xpath, (object) dt);
15 }
16 }
17
18
19 //获取时
20 public virtual object RetrieveObject(string xpath)
21 {
22 try
23 {
24 object cacheObject = RetrieveOriginObject(xpath);
25 CacheFlag cf = (CacheFlag) RetrieveOriginObject(xpath+"flag");
26
27 //当标志位中有数据时
28 if(cf ==CacheFlag.CacheHaveData)
29 {
30 string otype = cacheObject.GetType().Name.ToString();
31
32 //当缓存类型是数据表类型时
33 if(otype.IndexOf("Table")>0)
34 {
35 System.Data.DataTable dt = cacheObject as DataTable;
36 if ((dt == null) || (dt.Rows.Count == 0))
37&n
|