0

我正在客户端应用程序和服务器应用程序之间进行简单的通信。

服务器:

TcpListener tcp = new TcpListener(IPAddress.Parse("192.168.1.66"),9000);
tcp.Start();
TextBox.Text += "Start Listening \r\n"; //1
Socket s = tcp.AcceptSocket();
TextBox.Text += "Client Has Connected \r\n";

滞后以下列方式发生,在客户端连接之前,字符串编号 1 不会显示,应用程序只是冻结,我什至无法拖动窗口。

我尝试添加延迟:

TextBox.Text += "Start Listening \r\n";
System.Threading.Thread.Sleep(1000);
Socket s = tcp.AcceptSocket();
TextBox.Text += "Client Has Connected \r\n";

这仍然不允许打印第一条消息,然后搜索套接字。应用程序一直冻结,直到连接了客户端。

4

1 回答 1

0

你是在听线程吗?如果不是,您将锁定 gui 更新。

void StartListener()
{
    System.Threading.Thread listenerThread = new System.Threading.Thread(ListenerThread));
    listenerThread.IsBackground = true; // Causes the thread to close if the app is closed
    listenerThread.Start();
}

void ListenerThread()
{
    TcpListener tcp = new TcpListener(IPAddress.Parse("192.168.1.66"),9000);
    tcp.Start();
    UpdateStatus("Start Listening \r\n"); //1
    Socket s = tcp.AcceptSocket();
    UpdateStatus("Client Has Connected \r\n"); //1

    // Listen for more messages, or close the listener here.
}

void UpdateStatus(string message)
{
    if(InvokeRequired)
        Invoke((MethodInvoker)delegate { UpdateStatus(message); });
    else
        Textbox.Text = message;
}
于 2013-05-08T17:57:57.923 回答