C# AcceptCpclientAsync不';不要等待答复

C# AcceptCpclientAsync不';不要等待答复,c#,sockets,asynchronous,tcpclient,tcplistener,C#,Sockets,Asynchronous,Tcpclient,Tcplistener,我正在尝试编写一个控制台应用程序 _mainListener = new TcpListener(new IPEndPoint(IPAddress.Any, 5000)); _mainListener.Start(); try { while (true) { TcpClient client = await _mainListener.Accept

我正在尝试编写一个控制台应用程序

        _mainListener = new TcpListener(new IPEndPoint(IPAddress.Any, 5000));
        _mainListener.Start();

        try
        {
            while (true)
            {

                TcpClient client = await _mainListener.AcceptTcpClientAsync();
                client.ReceiveTimeout = 60000;

                WaitForData(client);

            }
        }
        catch (Exception ex)
        {
            StartListening();
        }
应用程序将在启动后立即终止

TcpClient client = await _mainListener.AcceptTcpClientAsync();
我知道连接到端口5000没有问题,因为AcceptTcpClient与Async方法不同,它使用有效响应转到WaitForData。我需要使用Async one,因为应用程序将连接到多个IP。我错过了什么


提前谢谢

关键字
wait
会导致方法停止执行,并且一旦客户端连接,方法的其余部分将继续执行

但是,如果这是从
Main()
方法调用的唯一代码,那么程序将在到达该行时立即终止,因为没有任何东西在运行


我认为您不需要使用async来完成您要做的事情,只要
WaitForData()
在内部是异步的,那么这段代码就会循环运行,继续接受更多的客户端。

如果AcceptCpcClient工作,它会提示逻辑错误,由于非异步代码仍将接受多个连接。是的,它接受多个连接,但等待一个连接关闭,然后再继续在另一个连接上工作,因此您将切换到线程。。然后绕着圈子走。即使你的方式也是一样的,大部分情况下..我需要异步来模拟连接到多个端口,使用sync方法,其他连接在活动连接关闭之前等待。只有当
WaitForData
本身是sync时才会发生这种情况。如果它是异步的或在单独的线程中运行sync,则此方法将在while循环中运行并接受下一个客户端。我遇到了相同的问题,我已更改了
wait\u mainlister.AcceptTcpClientAsync()
wait_mainlister.AcceptTcpClientAsync().Result。这解决了问题,但我真的不想阻塞池的线程。我想应该有另一个解决办法。。。。