2014-01-02 5 views
4

Вот основные части программы, в которых, по-видимому, возникает исключение.C# 'System.StackOverflowException' в InitializeComponent()

using System.Drawing; 
using Framework.pages; 

namespace Framework 
{ 
    public partial class MainWindow : Window 
    { 
     public string status; 
     public MainWindow() 
     { 
      InitializeComponent(); // Unhandled exception here 
      InitializeTheme(); 

      activationStep page = new activationStep(); 
      page.loadPage(); 
     } 
     // etc etc 

Это абстрактный класс

namespace Framework.pages 
{ 
    abstract class template : MainWindow 
    { 
     public abstract void loadPage(); 
     public abstract void loadTheme(); 
    } 
} 

Это класс стадии активации

using System.Windows.Media; 

namespace Framework.pages 
{ 
    class activationStep : template 
    { 
     public override void loadPage() 
     { 
      //this.loadTheme(); 
     } 

     public override void loadTheme() 
     { 
      // Default green activation button 
      //activateButton.Background = (SolidColorBrush)new BrushConverter().ConvertFromString(Framework.theme.darkGreen); 
      //activateButton.BorderBrush = (SolidColorBrush)new BrushConverter().ConvertFromString(Framework.theme.borderGreen); 
      // Set form error color to red 
      //activationFormError.Foreground = System.Windows.Media.Brushes.Red; 
     } 
     // etc etc 

Дело в том, если я закомментируйте эти две строки из класса MainWindow:

activationStep page = new activationStep(); 
page.loadPage(); 

Программа отлично работает, несмотря на то, что все в классе activationStep все равно прокомментировано (даже если они тоже не закомментированы)? Я просто совершенно незнаю, почему я получаю это особое исключение, так как определенно нет никаких интенсивных циклов или чего-то еще.

-Возможно отметить, что на самом деле в форму загружено не так много компонентов, и она работает нормально.

+0

Пожалуйста, изучите MVVM до того, как вы когда-нибудь напишите одну строку кода в WPF. –

ответ

7

Вы «newing» вверх на activationStep, которое происходит от template, который, в свою очередь, происходит от MainWindow, конструктор которого создает новый activationStep ... и т.д., и т.д.

Этот цикл проходит некоторое время, и то вы получите StackOverflowException.

Вам нужно будет переосмыслить свой дизайн.

+0

А я вижу, я действительно не ожидал, что это продолжится для бесконечного цикла? но, как бы то ни было, я рекомендую переписать всю вещь. Спасибо за ответ, хотя, очень ценю это! – iyop45

+2

Проблема полностью устранена. – iyop45

Смежные вопросы