У меня очень, очень странная ошибка, которую я никогда не мог определить (это случается очень редко). В общем, у меня есть приложение на C#, которое случайно выбрасывает неизвестное исключение при выходе. На этот раз мне удалось поймать его в отладчике, и оказалось, что вызов Application.Exit()
выбрасывает System.InvalidOperationException
со следующим сообщением:
A first chance exception of type 'System.InvalidOperationException' occurred in mscorlib.dll
Additional information: Коллекция была изменена; операция перечисления не может быть выполнена.
Я не уверен что представляет собой эта коллекция, которая якобы была изменена, или кто ее изменил.
Трассировка стека не очень помогает:
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 был изменен? Я не думаю, что это что-то, что я делаю явно, скорее всего, это действие, которое я делаю, которое изменяет базовое состояние .NET framework в середине операции, которую MS не ожидала...