public WebData GetData(string taskID) { WebDataWrapper wrapper = GetWrapper(taskID); if (wrapper == null) { return(null); } // 将缓冲的数据兑现到 WebData 中 wrapper.Flush(); return(wrapper.WebData); }
// 追加数据 WebDataWrapper AddWrapper(string taskID, WebData data) { lock (_syncRoot) { WebDataWrapper wrapper = null; if (_webData_table.ContainsKey(taskID) == false) { wrapper = new WebDataWrapper(); _webData_table[taskID] = wrapper; } else { wrapper = (WebDataWrapper)_webData_table[taskID]; } wrapper.Append(data); return(wrapper); } }
// 将距离当前时间 delta 以上的对象清除 public void Clean(TimeSpan delta) { lock (_syncRoot) { DateTime now = DateTime.Now; List <string> delete_keys = new List <string>(); foreach (string key in _webData_table.Keys) { WebDataWrapper wrapper = (WebDataWrapper)_webData_table[key]; if (now - wrapper.LastTime > delta) { delete_keys.Add(key); } } foreach (string key in delete_keys) { _webData_table.Remove(key); } } }
// 追加数据 public WebData AddData(string taskID, WebData data) { WebDataWrapper wrapper = AddWrapper(taskID, data); return(wrapper.WebData); }