NewOrder -1 Posting Whiz

i am trying to build a chat, basically i used the invoke function what a thread. i am able to read what the server sends me, but i am able to write only once. i am trying to finish this but not sure how to write to server each time the server:
(take into account that i wrote this before in console application form and the server works fine..ie. the problem isnt with the server).

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Button btn1 = new Button();
            btn1.Click += button1_Click;
        }
        StreamReader sr;
        StreamWriter sw;
        TcpClient connection;
        private void Form1_Load(object sender, EventArgs e)
        {
            connection = new TcpClient("127.0.0.1", 5000);
            sr = new StreamReader(connection.GetStream());
            sw = new StreamWriter(connection.GetStream());
        
        }
     
        private void button2_Click(object sender, EventArgs e)
        {
    
            Thread t2 = new Thread(Reader);
            t2.Start(connection);
        }




 



        string msg;
        public void Reader(object o)
        {
           
            TcpClient con = o as TcpClient;
            if (con == null)
                return;
            while (true)
            {
                 msg = sr.ReadLine();
               
                 Invoke(new Action(Output));
            }
        }
    
        public void Output()
        {
            ChatScreen.Text = msg;//set the message on the screen
        }
        string textinput;

        private void button1_Click(object sender, EventArgs e)
        {
            textinput = InputLine.Text;
            sw.WriteLine(textinput);// this thing, writes once, multiple clicks wont send a new line to the server :(..the problem is in this button
            sw.Flush();
         
        }
        

    }

what i thought to do is to connect the button so it will be able to do multiple clicks ..e.g btn.Click()..or run a thread with invoke on the WriteLine (but my intuition says that making the button click several times would make the program work

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.