/// <summary> /// 添加数据 /// </summary> /// <param name="token"></param> public void Add(AsyncUdpUserToken token) { IPEndPoint endPoint = token.Remote as IPEndPoint; if (null != endPoint) { string key = endPoint.Address.ToString() + endPoint.Port; dicRecvice[key] = DateTime.Now; RecviceData data = null; UDPDataPackage package = new UDPDataPackage(); package.UnPack(token.Data, token.Offset, token.Length); if (dicPool.TryGetValue(key, out data)) { data.Add(package); } else { lock (lock_obj) { //阻塞创建 if (!dicPool.TryGetValue(key, out data)) { data = new RecviceData(); dicPool[key] = data; data.remote = endPoint; data.OnDataReceived += Data_OnDataReceived; data.OnLossData += Data_OnLossData; data.Add(package); } else { data.Add(package); } } } } }