Ejemplo n.º 1
0
        /// <summary>
        ///		Libera los recursos no utilizados de <see cref="T:System.Net.Sockets.NetworkStream"/> y libera los
        ///	recursos administrados
        /// </summary>
        protected override void Dispose(bool disposing)
        {         // Llama al base
            base.Dispose(disposing);
            // Libera los recursos
            if (disposing && !IsDisposed)
            {
                bool connected = true;

                // Indica que se ha liberado
                IsDisposed = true;
                // Libera los recursos
                try
                {
                    // Libera el socket
                    if (InnerSocket != null)
                    {
                        // Guarda el valor que indica si estaba conectado
                        connected = InnerSocket.Connected;
                        // Libera el socket
                        if (connected)
                        {
                            Process(delegate
                            {
                                InnerSocket.Shutdown(SocketShutdown.Both);
                                InnerSocket.Close(300000);
                            }
                                    );
                        }
                    }
                    // Libera el stream
                    Process(delegate
                    {
                        if (InnerStream != null)
                        {
                            InnerStream.Dispose();
                        }
                    }
                            );
                }
                finally
                {
                    Release(ExpectEndReply);
                }
                // Si no estaba conectado, lanza una excepción
                if (!connected)
                {
                    throw new Exceptions.FtpTransportException("Stream cerrado anteriormente por el servidor");
                }
            }
        }
Ejemplo n.º 2
0
 // 关闭套接字
 public void Close()
 {
     InnerSocket.Close();
 }