通过TCP进行通信时,C#应用程序滞后

时间:2013-05-08 17:55:28

标签: c# sockets tcp lag

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

服务器:

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";

这仍然不允许打印第一条消息,然后搜索套接字。在连接客户端之前,应用程序一直处于冻结状态。

1 个答案:

答案 0 :(得分: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;
}