Ich sehe, es gibt bereits viele Fragen zu diesem Fehler. Ich habe sie alle durchgelesen und so ziemlich jedes einzelne ist, weil sie eine Sammlung verändern, während sie darüber aufzählen, was ziemlich offensichtlich ist. Mein Fall ist jedoch anders.Sammlung wurde geändert; Enumerationsoperation kann nicht ausgeführt werden # 10897
Also hier ist die Ausnahme in Frage. Beachten Sie die letzte Zeile, die ich geändert habe.
Source mscorlib
Method MoveNext
Message Collection was modified; enumeration operation may not execute.
Exception System.InvalidOperationException
Stack
at System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext()
at System.Windows.Forms.Application.ExitInternal()
at System.Windows.Forms.Application.ThreadContext.OnThreadException(Exception t)
at System.Windows.Forms.Control.WndProcException(Exception e)
at System.Windows.Forms.Control.ControlNativeWindow.OnThreadException(Exception e)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.RunDialog(Form form)
at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
at System.Windows.Forms.Form.ShowDialog()
at RandomEventWithinMyApp()
Ich habe persönlich nie den Fehler oder in der Lage gesehen, es zu reproduzieren. Ich habe diesen Fehlerbericht nur von Zeit zu Zeit von Benutzern gesehen und es ist mir immer entgangen.
Wie Sie sehen können, tritt der Fehler innerhalb des System.Windows.Forms.Form.ShowDialogs auf, sodass beim Versuch, ein Formular zu öffnen, ein Fehler auftritt. Offensichtlich habe ich keine Funktion namens RandomEventWithinMyApp, stattdessen tritt der Fehler buchstäblich zufällig in einem Steuerelementereignis auf, normalerweise ein Knopfklick zum Beispiel, da normalerweise das Öffnen eines Formulars durch den Benutzer ausgelöst wird.
Nun, wenn der Fehler konsistent passiert, wenn der Benutzer auf die gleiche Schaltfläche klickt, um das gleiche bestimmte Formular zu öffnen, dann wäre es viel einfacher zu erarbeiten. Das Problem besteht darin, dass das Ereignis, das den Fehler auslöst, zufällig ist. Dies kann ein beliebiges Ereignis (z. B. ein Klick auf eine Schaltfläche) sein, durch das ein Formular in der App geöffnet wird. Das Formular, das geöffnet wird, wenn der Fehler auftritt, ist ebenfalls zufällig. Ich habe also nichts zu tun.
Es fühlt sich fast so an, als ob etwas anderes schief läuft in dem .Net Formular Ladecode, den ich nicht sehen kann. Vielleicht etwas, das die Sammlung von offenen Formen oder etwas verwaltet ... keine Ahnung, nur wilde Vermutungen an dieser Stelle. Hat jemand irgendwelche Ideen, wo ich anfangen sollte zu untersuchen?
Das ist ein interessanter Punkt, aber ich frage mich, warum Application.ExitInternal überhaupt aufgerufen wird? Im konkreten Fall dieses Fehlers hatte der Benutzer auf eine Schaltfläche in der App geklickt, die daraufhin ein Formular öffnet. Sie haben die Anwendung nicht verlassen? Wenn man über den Call-Stack schaut, scheint es fast so, als ob etwas beim Öffnen des Formulars schief gelaufen ist, was eine Ausnahme ausgelöst hat, die dann die Anwendung verlassen hat. – user1227445