private void ClosePCB(TcpPcb pcb, TcpState state) { if (pcb == null) { return; } string pcbKey = GetPcbKey(pcb.Source, pcb.Destination); lock (_pcbTable) { _pcbTable.TryRemove(pcbKey, out TcpPcb pcbx); } lock (pcb) { pcb.State = state; if (!pcb.Aborted) { pcb.Aborted = true; pcb.OnAbort(EventArgs.Empty); } } }