2011-02-26 125 views
0

此代碼會引發錯誤。 我在代碼解釋錯誤:根據您的回答我的基於註釋的問題XmlReader中的堆棧溢出C#

public partial class Util 
{ 
    public string LoadFunctions() 
    { 

     string codeFunctionsString = ""; 

     XmlReader reader = XmlReader.Create("fname2.xml"); 
     //The line above throws an error: 
     //"An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll" 
     //The file DOES exist, so I don't know what the problem is. 

     reader.Read(); 
     while (reader.Read()) 
     { 

      reader.ReadToFollowing("item"); 
      //reader. 
      codeFunctionsString += reader.Value + "|"; 

      Form1 win = new Form1(); 

      win.CodeInput.Text += reader.Value + " "; 

     } 
     return codeFunctionsString; 
    } 
} 
+1

@patrick,你爲什麼有兩個? reader.read()??? – kobe 2011-02-26 17:07:45

+0

@你可以發佈你的frame.xml內容 – kobe 2011-02-26 17:08:05

+0

@patrick instantite一個來自util類的表單,這裏的東西非常錯誤?你應該從一個窗體,但不是相反的工具util類...它的壞設計 – kobe 2011-02-26 17:17:50

回答

3

,這裏發生了什麼事情。

class Form1 : Form { 
    public Form1() { 
     InitializeComponents(); 

     Util u = new Util(); 
     string functions = u.LoadFunctions(); 
    } 
} 

在這種情況下,我猜測該呼叫是在任一構造(如上所述),或在Form1_Load(未示出,但是同樣的想法)。

那麼,什麼情況是,當你調用LoadFunctions,它創建了一個Form1,它調用LoadFunctions,它創建了一個Form1,它調用LoadFunctions,它創建了一個Form1,它調用LoadFunctions,它創建了一個Form1,它調用LoadFunctions ,它創建了一個Form1,它調用LoadFunctions,它創建了一個Form1,而─ERROR:StackOverflowException

解決方法是要麼不創建LoadFunctions形式(也許,讓它成爲你傳遞的參數?),或者不要在Form1中調用LoadFunctions

+0

哦,哇,我從來沒有意識到我是這樣做的! 非常感謝您的回覆。 :) – pajm 2011-02-26 18:19:20

+0

我的榮幸。如果有人學到了東西,那麼這個世界就變得更好了:) – 2011-02-26 18:20:08