C#服务器套接字引发类型为'的未处理异常;system.stackoverflowexception';发生在system.drawing.dll中
我正在尝试在服务器应用程序上接收一系列图片帧,并在“开始”中的图片框中显示它们。程序工作正常,但5到10分钟后,取决于我发送帧的方式。我收到错误“System.Drawing.dll中发生了未经处理的“System.StackOverflowException”类型异常。我在服务器上的代码如下所示C#服务器套接字引发类型为'的未处理异常;system.stackoverflowexception';发生在system.drawing.dll中,c#,tcp,server,stack-overflow,C#,Tcp,Server,Stack Overflow,我正在尝试在服务器应用程序上接收一系列图片帧,并在“开始”中的图片框中显示它们。程序工作正常,但5到10分钟后,取决于我发送帧的方式。我收到错误“System.Drawing.dll中发生了未经处理的“System.StackOverflowException”类型异常。我在服务器上的代码如下所示 public void ImgRecive() { try { tcp.Start();
public void ImgRecive()
{
try
{
tcp.Start();
sock = tcp.AcceptSocket();
ns = new NetworkStream(sock);
pictureBox1.Image = Image.FromStream(ns);
tcp.Stop();
if (sock.Connected == true)
{
while (true) { ImgRecive(); }
}
ns.Flush();
}
catch (Exception exxx) { MessageBox.Show(exxx.Message); }
}
我试过了pictureBox1.Image.Dispose(); 我还试图移除图片框并重新创建它,但仍然有相同的问题 有没有解决问题的办法? 请参阅本文: ~z~剪掉 当执行堆栈因嵌套方法调用过多而溢出时,将引发StackOverflowException异常。 相关提示 确保没有无限循环或无限递归。 太多的方法调用通常表示非常深或无限的递归
此外,检查堆栈上分配的任何对象/数据,如果可能的话,尝试执行堆分配。我用while循环替换了递归,它对我有效 新代码是这样的
public void ImgRecive()
{
tcp.Start();
sock = tcp.AcceptSocket();
ns = new NetworkStream(sock);
while (sock.Connected == true)
{
try
{
tcp.Start();
sock = tcp.AcceptSocket();
ns = new NetworkStream(sock);
pictureBox1.Image = Image.FromStream(ns);
tcp.Stop();
ns.Flush();
}
catch (Exception exxx) { MessageBox.Show(exxx.Message); }
}
}
谢谢大家这都是真的,但它是如何回答这个问题的呢?谢谢你的回答,但确实没有帮助我知道alreadyOk不必担心:)虽然你的回答说你的问题是递归,我已经指出了,你已经知道了。“干杯!”雷内看到了OP的答案。我不必为他写代码,有时候简单的推一下就可以了。当(true){ImgRecive();}rene谢谢,但它没有帮助我仍然有同样的问题另一个家伙@usr如果你有tcp教程的名字,可能会帮助我或给我一个解决方案来修复错误,我会很感激我想我需要一些东西来清除卡滞或至少使其更大