Jak uzyskać dostęp do komponentu z wątku

0

Mam napisany mały serwerek w którym jest wątek nasluchujący czy coś przysłał klient.
Niestety z wnętrza wątku nie moge nic wpisać do richtext :(
Jak ominąć te przeszkode oto kod:
(dziekuje za pomoc)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.IO;
using System.Threading;

namespace Serwer12
{
public partial class Form1 : Form
{

    TcpListener tcpListener;

    public Form1()
    {
        InitializeComponent();
    }       

   private void button1_Click(object sender, EventArgs e)
    {
        IPAddress localAddr = IPAddress.Parse("127.0.0.1");
        //TcpListener tcpListener = new TcpListener(localAddr, 1234);
        tcpListener = new TcpListener(localAddr, 1234);
        tcpListener.Start();

        Thread thread = new Thread(AcceptConnections);
        thread.Start();
    }             

    private void AcceptConnections()
    {
        while (true)
        {
            Socket socketForClient = tcpListener.AcceptSocket();
                              
                NetworkStream networkStream = new NetworkStream(socketForClient);
                StreamWriter streamWriter = new StreamWriter(networkStream);
                StreamReader streamReader = new StreamReader(networkStream);

                string line = streamReader.ReadLine();
                Console.WriteLine(line);    
            //richTextBox1.SelectedText = line;
                //richTextBox1.Refresh();
                streamWriter.WriteLine("czesc tuataj twoj serwer");
                streamWriter.Flush();
              //  socketForClient.Close(); 
            }           
    }
}

}

0

Juz drugi raz napisze ci ta odpowiedz bo widze ze została usunięta, a moze sie komuś przydać:

Sekcja główna klasy:

...
private delegate void InvokeControl(string text);
private static InvokeControl invokeControl;

invokeControl = new InvokeControl(InvokeUIThread);
...

A dalej ciało delegacji:

        private static void InvokeUIThread(string text)
        {
            form1.listBox1.Items.Add(text);
        }

        private static void UpdateText(string text)
        {
            try
            {
                form1.listBox1.Invoke(invokeControl, text);
            }
            catch (Exception) { }
        }

oraz wywołanie przykładowe:

UpdateText("Dżizes");

wszystko jest w przykładzie który podałem ci we wcześniejszym poście! -> http://4programmers.net/Forum/viewtopic.php?id=91298

0

dziekuje :))))))))))))))))

1 użytkowników online, w tym zalogowanych: 0, gości: 1