日期:2014-05-17  浏览次数:20818 次

c# 数据缓冲怎么写
 需求:最近在用c#写一个收发数据的软件,收到数据(xml文件表示,一个XML文件,就是一类数据)后,解析,根据数据的头,进行不同的处理。
 情况:处理收数据,现在我为每类数据定义了一个类,然后写了一个分析函数,通过判断XML文件头节点,将数据放到了相应类的对象。
 问题:我现在要读取数据,进行处理,在界面上显示,我是不是该写个缓存,缓存读取的类对象,然后再处理?怎么写呢?
C# 数据缓冲机制

------解决方案--------------------
/// <summary>
///Test2 的摘要说明
/// </summary>
public class Test2 : IEnumerable
{
delegate void EventSaveCache(object key, object value);

private MappingContainer mContainer;

/// <summary>
/// 获取或设置当前缓存对象所在的关系映象容器
/// </summary>
public MappingContainer Container
{
get {
return mContainer;
}
set {
mContainer = value;
}
}

/// <summary>
/// 构造缓存对象
/// </summary>
public Test2()
{
// // TODO: 在此处添加构造函数逻辑 //
}

/// <summary>
/// 用于缓存数据的Hashtable
/// </summary>
protected System.Collections.Hashtable _Cache = new System.Collections.Hashtable();

protected Object _LockObj = new object();

/// <summary>
/// 获取指定键值的对象
/// </summary>
/// <param name="key">键值</param>
/// <returns>object</returns>
public virtual object GetObject(object key)
{
if (_Cache.ContainsKey(key)) return _Cache[key];
return null;
}

/// <summary>
/// 把对象按指定的键值保存到缓存中
/// </summary>
/// <param name="key">键值</param>
/// <param name="value">保存的对象</param>
public void SaveCaech(object key, object value)
{
EventSaveCache save = new EventSaveCache(SetCache);
IAsyncResult ar = save.BeginInvoke(key, value, new System.AsyncCallback(Results), null);
}

private void Results(IAsyncResult ar)
{
EventSaveCache fd = (EventSaveCache)((AsyncResult)ar).AsyncDelegate;
fd.EndInvoke(ar);
}

/// <summary>
/// 把对象按指定的键值保存到缓存中