而(真)循环lagg

时间:2014-04-26 09:54:41

标签: c# sockets loops while-loop freeze

无论如何,我试图使用TCPListener和TCPClient使客户端连接到服务器 每当我有while (true)代码时,它就会冻结我的整个应用程序。

我的代码:

private void addSocket(int port)
{
    server = new TcpListener(IPAddress.Any, port);
    server.Start();
    client = server.AcceptTcpClient();
    sr = new StreamReader(client.GetStream());
    sw = new StreamWriter(client.GetStream());
    toolStripStatusLabel2.Text = "waiting for connection";
    while (true)
    {
        toolStripStatusLabel2.Text = "client connected";
    }
    server.Stop();
    client.Close();
}

4 个答案:

答案 0 :(得分:0)

那是因为while (true)永远不会结束。添加一个将在某个时刻返回false的条件。

在这种情况下,while对我没有意义。你的意图是什么?只需启动TaskBackgroundWorker即可处理该流。

答案 1 :(得分:0)

while(true)是一个无限循环,摆脱它的唯一方法是使用break。或者将while(true)更改为可选择结束的某些条件。

在此代码中,while(true)部分对我来说没有任何意义,您应该在该部分添加其他内容,例如一些连接等等。

答案 2 :(得分:0)

你不需要它一直都是,是吗?

  private void addSocket(int port)
{
server = new TcpListener(IPAddress.Any, port);
server.Start();
client = server.AcceptTcpClient();
sr = new StreamReader(client.GetStream());
sw = new StreamWriter(client.GetStream());
toolStripStatusLabel2.Text = "waiting for connection";


    toolStripStatusLabel2.Text = "client connected";

server.Stop();
client.Close();
toolStripStatusLabel2.Text = "client not connected";
}

您只需为其更改文字即可。然后你可以稍后改变!!。

下次如果你想使用while(true){};考虑使用Thread

答案 3 :(得分:0)

如果您只是删除while声明,也许您的程序会运行正常,因为我在您的代码中看不到任何需要