Tengo este realmente, muy extraño error que nunca he sido capaz de precisar (ocurre muy raramente). Básicamente, tengo una aplicación C# que arrojaba aleatoriamente una excepción desconocida al salir. He conseguido atraparlo en el depurador este tiempo, y resulta que llamar Application.Exit()
es lanzar una System.InvalidOperationException
con el siguiente mensaje:System.InvalidOperationException debido a la modificación de la colección en la llamada a Application.Exit()
Una primera excepción del tipo 'System.InvalidOperationException' en mscorlib. dll
Información adicional: Se modificó la colección; la operación de enumeración no se puede ejecutar.
no estoy seguro de lo que esta colección que ha sido modificado supuestamente es, o quién era el que lo modificó.
El seguimiento de la pila no es muy útil:
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
alguna idea de cómo puede averiguar qué ArrayList es que ha sido modificado? No creo que sea algo que estoy haciendo explícitamente, más probablemente sea una acción que estoy haciendo que modifique el estado subyacente del framework .NET durante el medio de una operación que MS no esperaba ...
Parece la colección Forms. IIRC He visto esto suceder antes, pero no puedo recordar ningún detalle, lo siento. – leppie
¿Qué hace su aplicación en el cierre? ¿Podría proporcionar el código? – Fischermaen
Nada, realmente ... En el momento en que presioné el botón de salida, la aplicación estaba en estado inactivo, sin hilos de fondo ni actividades en ejecución. –