/// <summary> /// 清理 /// </summary> public void Clear() { string[] keys = new string[dicPool.Count]; dicPool.Keys.CopyTo(keys, 0); Parallel.ForEach(keys, key => { RecviceData recviceData = null; if (dicPool.TryGetValue(key, out recviceData)) { //移除 if (dicPool.TryRemove(key, out recviceData)) { recviceData.Clear(); recviceData.OnDataReceived -= Data_OnDataReceived; recviceData.OnLossData -= Data_OnLossData; } } } ); keys = null; dicPool.Clear(); dicRecvice.Clear(); }
/// <summary> /// 验证无效的信息 /// </summary> public void Validate() { string[] keys = new string[dicRecvice.Count]; dicRecvice.Keys.CopyTo(keys, 0); Parallel.ForEach(keys, key => { DateTime dateTime; RecviceData recviceData = null; if (dicRecvice.TryGetValue(key, out dateTime)) { if ((DateTime.Now - dateTime).TotalMinutes > maxEndPointTime) { //移除 if (dicPool.TryRemove(key, out recviceData)) { recviceData.Clear(); recviceData.OnDataReceived -= Data_OnDataReceived; recviceData.OnLossData -= Data_OnLossData; } dicRecvice.TryRemove(key, out dateTime); } } } ); }