Exemple #1
0
        protected virtual void Dispose(bool disposing)
        {
            if (!Disposed)
            {
                Server.RemoveClient(this);
                if (disposing)
                {
                    // dispose managed state (managed objects).
                    foreach (var http in RemoteClients)
                    {
                        http.Value.Dispose();
                    }
                    _taskScheduler.Dispose();
                    RemoteClients.Clear();
                    _timer.Dispose();
                    Authenticator.Dispose();
                    Cryptor.Dispose();
                }

                // free unmanaged resources (unmanaged objects) and override a finalizer below.
                // set large fields to null.

                _taskScheduler = null;
                _taskFactory   = null;
                _timer         = null;
                RemoteClients  = null;
                Disposed       = true;
            }
        }
Exemple #2
0
        protected virtual void Dispose(bool disposing)
        {
            lock (_syncRoot)
            {
                if (!Disposed)
                {
                    if (disposing)
                    {
                        // dispose managed state (managed objects).
                        try
                        {
                            _tcp.Client.Shutdown(SocketShutdown.Both);
                            _tcp.Client.Disconnect(false);
                        }
                        catch (Exception)
                        {
                            Logger.LogWarning("Socket errored before shutdown and disconnect");
                        }
                        _taskScheduler.Dispose();
                        _stream.Dispose();
                        _tcp.Dispose();
                        _disconnectTimer.Dispose();
                        _authenticator.Dispose();
                        _keyGenerator.Dispose();
                        Cryptor.Dispose();
                        RemoteClients.Clear();
                    }

                    // free unmanaged resources (unmanaged objects) and override a finalizer below.
                    // set large fields to null.
                    _taskScheduler   = null;
                    _taskFactory     = null;
                    _tcp             = null;
                    _stream          = null;
                    _disconnectTimer = null;
                    _authenticator   = null;
                    _keyGenerator    = null;
                    Disposed         = true;
                }
            }
        }