public void Dispose() { if (running == false) { return; } running = false; try { if (ServerAddress == IPAddress.Any) { TcpClient client = new TcpClient("127.0.0.1", tcpPort); client.Close(); } else { TcpClient client = new TcpClient(ServerAddress.ToString(), tcpPort); client.Close(); } } catch { } tcpListener.Stop(); udp.Dispose(); beacon.Dispose(); Records.Dispose(); List <CAServerChannel> channelsToRemove; lock (channelList) channelsToRemove = channelList.Values.ToList(); foreach (var i in channelsToRemove) { i.Dispose(); } List <CATcpConnection> connsToRemove; lock (openConnection) connsToRemove = openConnection.Values.ToList(); foreach (var i in connsToRemove) { i.Dispose(); } }
protected override void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { Records?.Dispose(); Records = null; } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; } }