我正在客户端应用程序和服务器应用程序之间进行简单的通信。
服务器:
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";
这仍然不允许打印第一条消息,然后搜索套接字。在连接客户端之前,应用程序一直处于冻结状态。
答案 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;
}