System.InvalidOperationException due to collection modification on call to Application.Exit()

У меня очень, очень странная ошибка, которую я никогда не мог определить (это случается очень редко). В общем, у меня есть приложение на 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 не ожидала...

8
задан Yuval Itzchakov 22 November 2014 в 09:54
поделиться