0
我有代碼,試圖建立連接每3秒使用TCP和阻塞套接字。每當它嘗試與socket.connect()建立連接時,我的所有Windows應用程序都會暫時凍結,甚至無法輸入記事本。我已經在2臺電腦上測試過它,結果相同。代碼駐留在計時器事件中。socket.connect()凍結窗口
如何在不使用異步方法的情況下避免凍結?
代碼:
IPEndPoint remoteEP = new IPEndPoint(ip, mainPort);
// Create a TCP/IP socket.
commandReceiverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
commandReceiverSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 0);
commandReceiverSocket.Blocking = true;
commandReceiverSocket.Connect(remoteEP);
如果您無法鍵入外部應用程序,其他事情正在進行。當您在應用程序中使用100%的CPU時,最有可能出現這種行爲。當您的計算機如此操作時,您的CPU使用率是多少? –
不,CPU使用率低於5%。 – Yekoor
現在我將代碼從表單加載事件的while循環中移出定時器事件,並且在啓動時它僅凍結一次,持續1-2秒。 – Yekoor