我遇到了这个非常非常奇怪的错误,我一直无法确定(这种情况很少发生)。基本上,我有一个 C# 应用程序在退出时随机抛出一个未知异常。这次我设法在调试器中捕获了它,结果发现调用Application.Exit()
抛出了System.InvalidOperationException
以下消息:
mscorlib.dll 中出现了“System.InvalidOperationException”类型的第一次机会异常
附加信息:集合已修改;枚举操作可能无法执行。
我不确定这个据称被修改的集合是什么,或者是谁修改了它。
堆栈跟踪不是很有帮助:
mscorlib.dll!System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext() + 0x13f 字节 System.Windows.Forms.dll!System.Windows.Forms.Application.ExitInternal() + 0x112 字节 System.Windows.Forms.dll!System。 Windows.Forms.Application.Exit(System.ComponentModel.CancelEventArgs e) + 0x65 字节
知道如何找出已修改的 ArrayList 吗?我不认为这是我正在做的任何事情,更可能是我正在做的一个动作,即在 MS 没想到的操作中间修改 .NET 框架的底层状态。