socket.connect()冻结了窗口

时间:2015-06-15 02:59:36

标签: c# sockets

我有代码尝试使用TCP和阻塞套接字每3秒建立一次连接。每当它尝试与socket.connect()建立连接时,我的所有Windows应用程序都会冻结片刻,我甚至无法输入记事本。我在2台PC上测试了它,结果相同。代码驻留在计时器事件中。

如何在不使用异步方法的情况下避免冻结?

代码:

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

1 个答案:

答案 0 :(得分:0)

尝试在任何语言的UI线程内建立连接都可能导致此问题。在你的应用程序形式的循环或计时器中调用它是不健康的。

尝试在不同的线程中运行与连接相关的所有内容,不要使用UI线程。