wpf 如何修复“System.StackOverflowException”?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/43693858/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 14:04:40  来源:igfitidea点击:

How to fix 'System.StackOverflowException?

c#.netwpf.net-3.5stack-overflow

提问by FWin

I have a project programmed in C#NET 3.5in WPFwhich start very well in debug. However for example, in my TemplateColor.csclass I have this:

我有一个在WPF 中用C# NET 3.5编程的项目,它在调试中启动得很好。但是,例如,在我的课堂上,我有这个:TemplateColor.cs

using System;
using System.Windows.Media;

namespace EWIN_THEME_MAKER.ThemeMaker
{
    public class TemplateColor
    {
        private int _id;

        private string _name;

        private string _toneName;

        public int ID
        {
            get
            {
                return this._id;
            }
            set
            {
                this._id = value;
            }
        }

        public int AllVerticalPos
        {
            get;
            set;
        }

        public int AllHorizontalPos
        {
            get;
            set;
        }

        public int HuePageNum
        {
            get;
            set;
        }

        public int HuePos
        {
            get;
            set;
        }

        public int TonePaneNum
        {
            get;
            set;
        }

        public int TonePos
        {
            get;
            set;
        }

        public string Name
        {
            get
            {
                return this._name;
            }
            set
            {
                this._name = value;
                string[] array = this._name.Split(new char[]
                {
                    '_'
                });
                this._toneName = array[0];
                if (array.Length > 1)
                {
                    this.HuePageNum = int.Parse(array[1]);
                }
            }
        }

        public string ToneName
        {
            get
            {
                return this._toneName;
            }
            set
            {
                this._toneName = value;
            }
        }

        public Color DarkColor
        {
            get;
            set;
        }

        public Color MainColor
        {
            get;
            set;
        }

        public Color LightColor
        {
            get;
            set;
        }

        public Color ShadowColor
        {
            get;
            set;
        }

        public byte ShadowA
        {
            get;
            set;
        }

        public Color GrowColor
        {
            get;
            set;
        }

        public Color TextShadowColor
        {
            get;
            set;
        }

        public Color TextMainColor
        {
            get;
            set;
        }

        public Color TextSelectColor
        {
            get;
            set;
        }

        public double TextShadowPosition
        {
            get;
            set;
        }

        public Brush DarkColorBrush
        {
            get
            {
                return new SolidColorBrush(this.DarkColor);
            }
        }

        public Brush MainColorBrush
        {
            get
            {
                return new SolidColorBrush(this.MainColor);
            }
        }

        public Brush LightColorBrush
        {
            get
            {
                return new SolidColorBrush(this.LightColor);
            }
        }

        public Brush ShadowColorBrush
        {
            get
            {
                return new SolidColorBrush(this.ShadowColor);
            }
        }

        public Brush GrowColorBrush
        {
            get
            {
                return new SolidColorBrush(this.GrowColor);
            }
        }

        public Brush TextShadowColorBrush
        {
            get
            {
                return new SolidColorBrush(this.TextShadowColor);
            }
        }

        public Brush TextMainColorBrush
        {
            get
            {
                return new SolidColorBrush(this.TextMainColor);
            }
        }

        public Brush TextSelectColorBrush
        {
            get
            {
                return new SolidColorBrush(this.TextSelectColor);
            }
        }

        public TemplateColor()
        {
            this.ID = -1;
            this.AllVerticalPos = -1;
            this.AllHorizontalPos = -1;
            this.HuePageNum = -1;
            this.HuePos = -1;
            this.TonePaneNum = -1;
            this.TonePos = -1;
            this.Name = "---";
            this.DarkColor = default(Color);
            this.MainColor = default(Color);
            this.LightColor = default(Color);
            this.ShadowColor = default(Color);
            this.ShadowA = 0;
            this.GrowColor = default(Color);
            this.TextShadowColor = default(Color);
            this.TextMainColor = default(Color);
            this.TextSelectColor = default(Color);
            this.TextShadowPosition = 0.0;
        }
    }
}

In this code, there are multiple errors of this kind:

在这段代码中,有多个此类错误:

An exception of type 'System.StackOverflowException

'System.StackOverflowException 类型的异常

For example I take this part of the code there:

例如我把这部分代码放在那里:

public string Name
{
    get
    {
        return this._name;
    }
    set
    {
        this._name = value;
        string[] array = this._name.Split(new char[]
        {
            '_'
        });
        this._toneName = array[0];
        if (array.Length > 1)
        {
            this.HuePageNum = int.Parse(array[1]);
        }
    }
}

So, in the next lines of this code there is an infinite call? I do not know how to correct this error.

那么,在此代码的下几行中有一个无限调用?我不知道如何纠正这个错误。

string[] array = this._name.Split(new char[]

And...

和...

this.HuePageNum = int.Parse(array[1]);

How do we predict and correct these errors? Yes

我们如何预测和纠正这些错误? 是的

采纳答案by FWin

My problem is now solved. Solution: Increasing the size of the stack with: http://content.atalasoft.com/h/i/58213648-increasing-the-size-of-your-stack-net-memory-management-part-3

我的问题现在解决了。解决方案:增加堆栈的大小:http: //content.atalasoft.com/h/i/58213648-increasing-the-size-of-your-stack-net-memory-management-part-3

Thanks to all!

谢谢大家!