C# 为什么我的程序只是停止,没有抛出异常?

C# 为什么我的程序只是停止,没有抛出异常?,c#,exception,C#,Exception,我有以下代码。发生错误,代码在\u clientStreamWriter.Flush()处中断在SendData方法中 没有给出错误,没有引发异常。。。程序刚刚停止。有什么帮助吗?谢谢 public class clsTCPClient { TcpClient TCPClient = new TcpClient(); StreamWriter _clientStreamWriter; public bool Connect(string Dest, int Port)

我有以下代码。发生错误,代码在
\u clientStreamWriter.Flush()处中断
SendData
方法中

没有给出错误,没有引发异常。。。程序刚刚停止。有什么帮助吗?谢谢

public class clsTCPClient
{
   TcpClient TCPClient = new TcpClient();
   StreamWriter _clientStreamWriter;

   public bool Connect(string Dest, int Port)
   {
       try
       {
           if (!TCPClient.Connected)
           {
               TCPClient.Connect(Dest, Port);
               _clientStreamWriter = new StreamWriter(TCPClient.GetStream());
           }
       }
       catch(Exception e)
       {
           utilities.WriteLog(utilities.LogDir + "\\AEOS.log", e.ToString());
           return false;
       }
       return true;
   }

   public void SendData(string Data)
   {      
       try
       {
           //send message to server
           _clientStreamWriter.WriteLine(Data);
           _clientStreamWriter.Flush();

       }
       catch(Exception e)
       {
           utilities.WriteLog(utilities.LogDir + "\\AEOS.log", e.ToString());
       }
   }    
}

TCP是一种可靠的连接。您需要读取服务器端的所有数据,并正确地完成读取,以便代码进一步移动。您可能会在超时后得到异常

编辑:


我刚刚测试了它,实际上Flush()不应该阻塞,即使您不接受套接字或读取服务器端的任何数据。所以这一定是另外一个问题。

如果没有给出错误,您如何知道发生了错误?主要的逻辑是什么?这里有一个类,但没有解释它的用法。=)您试图将数据发送到哪里?这也是您的代码,还是某个外部程序正在侦听该地址和端口?默认情况下,超时为0。。。。这就是为什么它只是挂在那里这有点误导;网络IO通常有几个缓冲区等;服务器不需要实际使用它。是的,TCP是可靠的,但这通常是在硬件/驱动程序/操作系统层处理的,而不是在应用程序层。谢谢,你解决了我的问题。。。我必须添加一个TCPClient.SendTimeout=xxxxx来设置超时,然后抛出错误。