C# XmlReader在第一次读取后挂起

C# XmlReader在第一次读取后挂起,c#,xmlreader,networkstream,C#,Xmlreader,Networkstream,我正在尝试通过TcpClient读取xml流: TcpClient clientSocket = new TcpClient("172.16.1.222", 80); 将流创建为 NetworkStream serverStream = clientSocket.GetStream(); 我接着读: XmlReader r = XmlReader.Create(serverStream); while (r.Read()) { if (r.NodeType == XmlNodeTyp

我正在尝试通过TcpClient读取xml流:

TcpClient clientSocket = new TcpClient("172.16.1.222", 80);
将流创建为

NetworkStream serverStream = clientSocket.GetStream();
我接着读:

XmlReader r = XmlReader.Create(serverStream);
while (r.Read())
{
    if (r.NodeType == XmlNodeType.Element)
    {
        somename = r.Name.ToString();
    }
    if (r.NodeType == XmlNodeType.Text && somename == "abc")
    {
          readBoxID.Text = r.Value.ToString();
    }
}
这对于第一个流很有效。我看到数据很好,但在(r.Read)时,数据挂起并出现以下错误:

无法计算表达式,因为本机框架位于调用堆栈的顶部


有什么建议吗?

您确定服务器发送了客户端可以读取的内容吗?您在调试器中看到的“错误”消息只是说读取方法在等待服务器数据时被阻止。您在调试期间何时收到此错误?或者在正常模式下运行你的应用程序?正如@dtb所提到的,这不是Read()的错误。Read()是一个sync调用,在它读取所有数据之后,它会阻塞当前线程并在那里等待更多数据。所以,这不是真正的错误-数据停止进入?有没有关于我如何看到没有数据并停止进程的建议?我刚刚尝试关闭reader:r.Close(),但似乎没有任何作用。服务器应该向客户端发送一个完整、格式良好的XML文档,然后关闭连接。