public void AddSockUnit(SockUnit unit) { System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() => { switch (unit.Type) { case SockType.listen: case SockType.connect: SockUnitGroup.Add(unit); break; case SockType.accept: var subset = from s in SockUnitGroup where s.Type == SockType.listen && s.Lep.Port == unit.Lep.Port select s; if (subset.Count() != 0) { subset.First().Childs.Add(unit); CurrentAcceptCount++; HistoryAcceptOpenCount++; } break; } })); }
public void DelSockUnit(SockType type, IPEndPoint lep, IPEndPoint rep) { System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() => { SockUnit unit = FindSockUnit(type, lep, rep); if (unit == null) { return; } switch (type) { case SockType.listen: case SockType.connect: SockUnitGroup.Remove(unit); break; case SockType.accept: var subset = from s in SockUnitGroup where s.Type == SockType.listen && s.Lep.Port == unit.Lep.Port select s; if (subset.Count() != 0) { subset.First().Childs.Remove(unit); CurrentAcceptCount--; HistoryAcceptCloseCount++; } break; } })); }