c# - InitializeComponent()中的C#'System.StackOverflowException'

原文 标签 c# stack-overflow

以下是程序的主要部分,似乎与异常有关。

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

问题是如果我从主窗口类中注释掉这两行:
activationStep page = new activationStep();
page.loadPage();

尽管activationstep类中的所有内容都被注释掉了(即使它们也没有被注释掉),程序仍然运行良好?我只是完全不知道为什么我会得到这个特殊的例外,因为肯定没有任何激烈的循环或任何东西。
-值得注意的是,加载到表单中的组件并不多,而且它通常运行平稳。

最佳答案

您正在“新建”一个activationStep,它派生自template,它又派生自MainWindow,其构造函数创建一个新的activationStep。等等。
这个循环运行一段时间,然后得到一个StackOverflowException
你需要重新考虑你的设计。

相关文章:

c# - 原型(prototype)模式是否符合依赖注入(inject)?

c# - 设置超时时HttpClient挂起(Windows Phone)

c# - 如何根据事件指导获取注释

c++ - 尝试确定是在堆栈还是堆上分配内存时,没有发生Stackoverflow

c# - jQuery运行时错误:预期对象

c++ - 2D数组100x100堆栈溢出;堆上没有错误。 C++

c# - 什么可能导致Dictionary的linq迭代期间堆栈溢出?

android - 如何获得堆栈大小

java - log4j stackoverflow

c# - 当您要测试派生类与基类的交互时,如何构造单元测试