2016-03-06 64 views
0

我試圖在服務器應用程序上接收一系列圖片幀並將它們顯示在圖片框中開始程序工作完美但經過5至10小步舞取決於我如何發送幀我有錯誤「類型‘System.StackOverflowException’未處理的異常發生在System.Drawing.dll程序」我的服務器看起來像C#服務器套接字引發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(); 和我也試圖刪除圖片框並重新創建它,但仍然有同樣的問題

所以任何想法來解決問題的傢伙? enter image description here

+0

你不應該這樣做',而(真){ImgRecive( ); }' – rene

+0

rene謝謝,但它沒有幫助乙醚我仍然是同樣的問題 –

+0

其他人@usr如果你有tcp教程的名稱,可能會有所幫助或給了我一個解決方案來修復錯誤,我會感激 –

回答

-1

我更換了遞歸與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); } 
     } 
    } 

感謝ü所有球員

-1

參見本文: https://msdn.microsoft.com/en-us/library/w6sxk224.aspx

〜剪斷

甲StackOverflowException拋出異常時通過具有太多的嵌套的方法調用執行堆棧溢出。 相關提示 確保您沒有無限循環或無限遞歸。 太多的方法調用通常表示非常深的或無界的遞歸。

此外,檢查任何對象/數據在堆棧上分配,並嘗試做堆分配,如果可能的話。

+1

這是全部的事實,但它如何回答這個問題? – rene

+0

感謝您的回答,但真的沒有幫助,我知道已經 –

+0

好吧,不用擔心:)雖然你的答案確實表明你的問題是我指出的,你已經知道的遞歸。乾杯。 – kvr

相關問題