in server -(multi)client application [TCP]. I use Socket, NetworkStream, StreamReader and StreamWriter for each client i Accept in the server .. so i have couple of questions :
 Thread thAccept = new Thread(acceptClient);
 Thread thJob;
 private void acceptClient()
    {
        while (true)
        {
            Socket client = server.Accept();
            Console.WriteLine(client.RemoteEndPoint+" has connected");
            StreamReader reader = new StreamReader(new NetworkStream(client));
            //is it ok to create an instance NetworkStream like this or i will have to dispose it later?
            thJob = new Thread(Job);
            thJob.Start(reader);
        }
    }
 private void Job(object o)
    {
        StreamReader reader = (Socket)o;
        try
        {
            string cmd = null;
            while ((cmd = reader.ReadLine()) != null)
            {
              //(BLA BLA..)
            }
        }
        catch
        {
            Console.WriteLine("Disconnected by catch");  
        }
        finally
        { 
            Console.WriteLine("Finally Done.");
            reader.Dispose();
        }
    }
is that code fine to dispose all (needed to be disposed) objects?
 
    