我正在客戶端應用程序和服務器應用程序之間進行簡單通信。C#應用程序在通過TCP進行通信時出現延遲
服務器:
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";
不過這將不允許將被打印的第一消息,然後搜索套接字。應用程序一直處於凍結狀態,直到客戶端連接。
您正在阻止您的UI線程。不要這樣做。閱讀此:http://stuff.seans.com/2009/05/21/net-basics-do-work-in-background-thread-to-keep-gui-responsive/ – 2013-05-08 17:58:33
出於好奇,是否有一個使用普通套接字而不是'WCF'的具體原因是什麼? – PoweredByOrange 2013-05-08 17:59:26
@ programmer93 - 如果他非常綠色,以至於他不瞭解線程阻塞,那麼WCF也會在他的腦海中變得方式過時。 – 2013-05-08 18:00:27