ReadAsync 停止代码执行,没有抛出异常并且 Task 仍在运行

问题描述

所以我使用 TcpClient 类通过我的 C# 程序连接到代理服务器。我建立了连接,然后使用 ReadAsync 方法继续从服务器读取到缓冲区中。但是当代理设备断开连接时,看起来 ReadAsync 方法进入了一个循环并且没有进一步的代码被处理。有趣的是,没有抛出异常,任务仍然继续工作(在 Listen() 调用中放置一个等待会阻止进一步执行,即使设备断开连接)。

代码:

        public async Task Listen()
        {
            try
            {
                await server.ConnectAsync(ServerIP,ServerPort);

                if (server.Connected)
                {                    
                    using (NetworkStream stream = server.GetStream())
                    {
                        while (server.Connected)
                        {
                            try
                            {
                                byte[] buffer = new byte[server.ReceiveBufferSize];

                                int length = await stream.ReadAsync(buffer,buffer.Length);
                            }
                            catch(Exception e)
                            {
                                server.Close();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                server.Close();
            }
        }

有人知道如何检测设备何时断开连接,以便我可以进一步处理吗?代理服务器不会关闭,只是停止发送数据。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)