C# 为什么System.StackOverflowException仅在某些机器上出现?

C# 为什么System.StackOverflowException仅在某些机器上出现?,c#,events,recursion,C#,Events,Recursion,无意中,我在代码中做了一些循环,这些循环一直调用事件处理程序本身。我的电脑(Win7 64)和同事在XP上运行时都没有遇到任何问题。但在第三台PC上,也使用Win7 64,应用程序崩溃 我在我的电脑和同事的电脑上进行调试,甚至调试程序中的行为也不同 我可以说,我的电脑以某种方式处理了这个问题,最后出了门(我不知道为什么),而在第二台电脑上,它只是卡在无限循环中。原因可能是什么?长话短说-下面的代码在两台电脑上运行,在另一台电脑上不运行-为什么 private void comboBoxBasic

无意中,我在代码中做了一些循环,这些循环一直调用事件处理程序本身。我的电脑(Win7 64)和同事在XP上运行时都没有遇到任何问题。但在第三台PC上,也使用Win7 64,应用程序崩溃

我在我的电脑和同事的电脑上进行调试,甚至调试程序中的行为也不同

我可以说,我的电脑以某种方式处理了这个问题,最后出了门(我不知道为什么),而在第二台电脑上,它只是卡在无限循环中。原因可能是什么?长话短说-下面的代码在两台电脑上运行,在另一台电脑上不运行-为什么

private void comboBoxBasicTabBasicProfile_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    _profilesContainer.SetCurrentBasicConfig((BasicConfigSTD32)comboBoxBasicTabBasicConfig.SelectedItem);
    loadBasicConfigsToGUI();
}

private void loadBasicConfigsToGUI()
{
    var currentConfig = _profilesContainer.GetCurrentBasicConfig();
    comboBoxStatusTabBasicConfig.Items.Refresh();
    comboBoxBasicTabBasicConfig.Items.Refresh();

    comboBoxStatusTabBasicConfig.ItemsSource = _profilesContainer.BasicConfigList;
    comboBoxStatusTabBasicConfig.SelectedItem = currentConfig;
    comboBoxBasicTabBasicConfig.ItemsSource = _profilesContainer.BasicConfigList;
    comboBoxBasicTabBasicConfig.SelectedItem = currentConfig;
    // [...]
}

不完全确定,但刷新CollectionView可能会触发SelectionChanged,从而导致视图再次刷新。但为什么它能在一台电脑上工作而不能在另一台电脑上工作,这很难回答。可能是不同的堆栈大小,可能是内存不足。更改
SelectedItem
时,您可能触发
LoadBasicConfigToGui
中的
SelectionChanged
事件。不同计算机上的不同行为可能是由于
SelectedItem
由于某些原因已经与在某些(但不是所有)情况下设置的相同。为什么每次更改选择时都要执行所有这些操作?如果确实需要执行所有这些操作,请在comboBoxBasicTabBasicProfile_SelectionChanged开始时删除SelectionChanged事件,并在结尾处再次添加它-是的,这是我第一次证明问题所在-这很有帮助,但无论如何我必须更改它。MagnusGrindalBakken——正如我所写,我不应该那样做,但我错了。问题是,直到我在不同的PC上运行应用程序,我才能找到它。问题仍然是,不同行为的原因是什么。