Пример #1
0
 /// <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();
 }
Пример #2
0
 /// <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);
             }
         }
     }
                      );
 }