而(真)阻止

时间:2012-12-27 19:18:54

标签: while-loop

我在网上看到了这段代码。但是,我无法理解while(true)阻止如何在此代码中发生:

private void ListenForClients()
{
  this.tcpListener.Start();

  while (true)
  {
    //blocks until a client has connected to the server
    TcpClient client = this.tcpListener.AcceptTcpClient();

    //create a thread to handle communication
    //with connected client
    Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
    clientThread.Start(client);
  }
}

任何人都可以向我解释一下吗?我知道使用while(true) +破坏条件,但这件事超出了我的范围。

2 个答案:

答案 0 :(得分:5)

AcceptTcpClient是什么阻止。 while (true)将无休止地循环,直到进程终止,线程被中断或抛出异常。

答案 1 :(得分:3)

执行阻止的不是while(true),而是AcceptTcpClient()。这就是:

  1. tcpListener已启动。
  2. 循环开始(因为true始终为真)
  3. 执行
  4. this.tcpListener.AcceptTcpClient()并停止线程,因为AcceptTcpClient是一种阻止方法。
  5. 如果发出连接请求,则该块将消失,并返回TcpClient作为变量客户端。
  6. 为客户
  7. 创建新主题
  8. 循环再次返回到AcceptTcpClient并停在那里直到建立新连接。