Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#服务器套接字引发类型为'的未处理异常;system.stackoverflowexception';发生在system.drawing.dll中_C#_Tcp_Server_Stack Overflow - Fatal编程技术网

C#服务器套接字引发类型为'的未处理异常;system.stackoverflowexception';发生在system.drawing.dll中

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();

我正在尝试在服务器应用程序上接收一系列图片帧,并在“开始”中的图片框中显示它们。程序工作正常,但5到10分钟后,取决于我发送帧的方式。我收到错误“System.Drawing.dll中发生了未经处理的“System.StackOverflowException”类型异常。我在服务器上的代码如下所示

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教程的名字,可能会帮助我或给我一个解决方案来修复错误,我会很感激我想我需要一些东西来清除卡滞或至少使其更大