2011-12-21 39 views
1

我想知道,如果有人可以幫助,我是比較新的編程C#,這裏是造成StackOverflowException代碼:幫助我解決一個StackOverflowException C#

private void createButton_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     MeWhoService.Account NewAccount = new MeWhoService.Account(); 

     NewAccount.AccountID = Guid.NewGuid(); 
     NewAccount.LastName = LastNameTextBox.Text.Trim(); 
     NewAccount.FirstName = FirstNameTextBox.Text.Trim(); 
     NewAccount.EmailAddress = EMailAddressTextBox.Text.Trim(); 
     NewAccount.Password = PasswordTextBox.Password.Trim(); 
     NewAccount.ConfirmPassword = ConfirmPasswordTextBox.Password.Trim(); 


     // Set Password 
     if (ValidatePassword()) 
     { 
      NewAccount.Password = PasswordTextBox.Password.Trim(); 
      viewModel.Create(NewAccount); 

      NavigationService.Navigate(App.MeAndWhoUri); 
     } 
     else 
     { 
      MessageBox.Show("Your Passwords don't match."); 
     } 
    } 
    catch (Exception excp) 
    { 
     MessageBox.Show(excp.Message); 
    } 
} 
+0

如果您明確指出上述代碼中的哪一行涉及堆棧溢出,將會非常有幫助。 – 2011-12-21 00:16:33

+1

StackOverflowException是由一個函數引起的,該函數最終會在遞歸循環中調用自身(可能間接),直到堆棧被填充。通常只需查看異常的堆棧跟蹤即可看到問題。您沒有包含足夠的代碼供我們肯定地說。 – antlersoft 2011-12-21 00:18:19

+1

堆棧溢出可能不是由上面的代碼造成的;相反,它可能是由上述代碼調用的其中一種方法引起的,例如ValidatePassword()或您寫的其他內容。 – 2011-12-21 00:18:51

回答

2

在.NET調試StackOverflowException是簡單。在調試中啓動程序,執行導致異常的任何事情,等到引發異常,然後查看堆棧跟蹤。你的堆棧跟蹤將有一個模式,顯示任意數量的重複方法調用。找出哪個方法調用不應該調用堆棧跟蹤中的另一個方法調用,並且您的錯誤將消失。

如果您無法在您的堆棧跟蹤中找到該模式,請將其包含在您的問題中,我相信此處有人能夠幫助您。