Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Window1.exe中发生“System.StackOverflowException”类型的未处理异常_C#_Wpf_Visual Studio - Fatal编程技术网

C# Window1.exe中发生“System.StackOverflowException”类型的未处理异常

C# Window1.exe中发生“System.StackOverflowException”类型的未处理异常,c#,wpf,visual-studio,C#,Wpf,Visual Studio,就在今天,我开始遇到这个异常,我正在忍受它的修复。我想知道怎么做,因为我没有找到其他有用的答案。我有这两部分代码,看起来我的代码正在循环,但我不知道如何修复它 public partial class MainWindow : Window { //Produkt produkt = new Produkt("e", 12, 21, 1); string[] header = { "------------------------------------

就在今天,我开始遇到这个异常,我正在忍受它的修复。我想知道怎么做,因为我没有找到其他有用的答案。我有这两部分代码,看起来我的代码正在循环,但我不知道如何修复它

 public partial class MainWindow : Window
    {
        //Produkt produkt = new Produkt("e", 12, 21, 1);
        string[] header = { "-----------------------------------------------------------", "            Pokus o pokladni software na MVOP", "        Asi to odevzdam pozdeji, protoze jsem nemel cas", "            Jo a taky neumim poradne programovat", "                takze jestli projdu ", "                TAK TO BUDE ZAZRAK", "-----------------------------------------------------------" };
        int pocet = 1;
        public double total = 0;
        string RegisteredUser = "test";
        public string cas = "now";
        DateTime zacatekObjednavky;
        TimeSpan casObjednavky;
        Window1 win2 = new Window1();
        Platba platba = new Platba();
        public double totalDPH;


        public MainWindow()
        {
            InitializeComponent();
            NovaObjednavka();
            DispatcherTimer timer = new DispatcherTimer();
            timer.Tick += new EventHandler(timer_Tick);
            timer.Interval = new TimeSpan(0, 0, 1);
            timer.Start();
            zacatekObjednavky = DateTime.Now;
        }
但奇怪的是,它破坏了第三个窗口,这与循环表单无关,所以我有点困惑

  public partial class Window1 : Window
    {
        int idUzivatele;
        public Window1()
        {
            InitializeComponent();
        }

感谢您的帮助,

正如@Gusman所指出的,您有一个递归调用结构@mjwills建议阅读堆栈跟踪的工作原理。堆栈跟踪函数调用,以便它们知道在完成时返回到哪里。它将向您显示函数调用的顺序

此外,学习如何分步执行代码而不是简单地运行代码也会很有帮助。您将看到初始化例程和构造函数的顺序,并且问题所在的位置将变得很明显。使用“调试”菜单并使用“单步执行”启动项目,而不是开始调试

具体来说,在您的情况下,Platba构造函数调用Form=new MainWindow;。这很可能不是你想要的。相反,您可能希望将主窗口作为参数传递给Platba构造函数。例如,Platba Platba=Platbathis

另外,更改MainWindow构造函数以初始化Platba和其他窗口

    public MainWindow()
    {
        InitializeComponent();
        platba = new Platba(this);
        // ...
    }

MainWindow创建一个Platba和一个Window1,Platba创建一个Mainwindow1,MinWindow1创建一个Platba和一个Window1等等..我很清楚出了什么问题,但不知道如何修复它,因为我需要在其他窗口中调用这些。我不能告诉你如何修复它,因为我无法预测你想做什么。我已经更新了答案,为你指明了一个方向。很可能您不希望主窗口创建一个Platba,然后让Platba创建一个主窗口。将主窗口的新构造函数从Platba构造函数中取出。我需要使用它们之间表单中的几个变量,因此我需要以某种方式调用它们,例如,我需要Platba窗口中的总变量,我在主窗口中使用Platba中的几个组件,所以我需要像这样调用它,改变Platba构造函数,使其采用主窗体:PlatbaMainWindow mainWindow
    public Platba(MainWindow mainWindow)
    {
        Form = new MainWindow();
        totalPuvodni = mainWindow.total;
        InitializeComponent();
        totalPlatba = mainWindow.total;
    }
    public MainWindow()
    {
        InitializeComponent();
        platba = new Platba(this);
        // ...
    }