gpt4 book ai didi

c# - System.InvalidOperationException 由于调用 Application.Exit() 时的集合修改

转载 作者:太空狗 更新时间:2023-10-29 18:11:09 26 4
gpt4 key购买 nike

我遇到了这个非常非常奇怪的错误,我一直无法确定(这种情况很少发生)。基本上,我有一个在退出时随机抛出未知异常的 C# 应用程序。这次我设法在调试器中捕获了它,事实证明调用 Application.Exit() 会抛出一个 System.InvalidOperationException 并显示以下消息:

A first chance exception of type 'System.InvalidOperationException' occurred in mscorlib.dll

Additional information: Collection was modified; enumeration operation may not execute.

我不确定什么据称被修改的这个集合是什么,或者是谁修改了它。

堆栈跟踪不是很有用:

mscorlib.dll!System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext() + 0x13f bytes System.Windows.Forms.dll!System.Windows.Forms.Application.ExitInternal() + 0x112 bytes System.Windows.Forms.dll!System.Windows.Forms.Application.Exit(System.ComponentModel.CancelEventArgs e) + 0x65 bytes

知道如何找出已修改的 ArrayList 吗?我不认为这是我在明确地做的任何事情,更可能是我正在做的一个操作是在 MS 没有预料到的操作过程中修改 .NET 框架的基础状态..

最佳答案

不寻常,以前从未见过。 Application.ExitInternal() 方法迭代 Application.OpenForms 集合。很明显,这个集合在这样做的时候正在被修改。造成这种情况的可能原因很少,我只能想出一个。您的一个表单已覆盖 OnFormClosing() 方法或订阅了 FormClosing 事件。并且正在做一些修改 OpenForms 集合的事情。可以处理表单对象或创建新的表单实例或修改导致重新创建窗口的表单属性,如 ShowInTaskbar。

您不会在调用堆栈中找到此代码。查看您的 On/FormClosing 代码。如果您不能快速找到它,请将代码注释掉。

关于c# - System.InvalidOperationException 由于调用 Application.Exit() 时的集合修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com