Laden...

Schließen von Forms führt zum Absturz der Anwendung

Erstellt von Gogeta vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.220 Views
Thema geschlossen
G
Gogeta Themenstarter:in
152 Beiträge seit 2012
vor 10 Jahren
Schließen von Forms führt zum Absturz der Anwendung

Hallo Community,
habe ein Problem mit dem Schließen meiner GUI.

Auf meiner GUI befindet sich ein Button der eine andere Form öffnet:


Form2 settings = new Form2();
settings.Show();
settings.Focus();
this.Hide() // Wenn ich hier .Close() verwendet stürtzt die Anwendung ab!

Nachdem ich nun auf Form2 bin und hier alles einstellen kann(speicherpfad etc.) habe ich auch hier einen Button der eine weitere Form öffnet:


Form3 db = new Form3();
db.Show();
db.Focus();
this.Hide() // Wenn ich hier .Close() verwendet stürtzt die Anwendung ab!

So nun öffnet sich auch diese Form und hier stelle ich alles ein. Nachdem ich Form3 schließe FormClosing - Event:


Form2 settings = new Form2 ();
settings .Show();
settings .Focus();
this.Hide() // Wenn ich hier .Close() verwendet stürtzt die Anwendung ab!

So nun bin ich wieder bei Form2 hier sind wieder die Optionen zu sehen. Wenn ich diesen jetzt auch schließe, FormClosing - Event:


Form1 App = new Form1 ();
App.Show();
App.Focus();
this.Hide() // Wenn ich hier .Close() verwendet stürtzt die Anwendung ab!

Nun bin ich wieder bei der Form1, hier startet die Anwendung, bis hierhin alles gut. Doch wenn ich jetzt auch diese Form schließe, FormClosing - Event:


Application.Exit(); // bei this.Close() stürtzt die Anwendung wieder ganz ab!

Kommt die Fehlermeldung:

Fehlermeldung:
Die Auflistung wurde geändert. Der Enumerationsvorgang kann möglicherweise nicht ausgeführt werden.

Diese Fehelermeldung kommt drei mal und wenn ich dann auf Beenden klicke, stürtzt die Anwendung nach den 3 Fehlermeldungen ab (Prozess muss beendet werden).

Jetzt weiß ich leider nicht woran das liegt, habe schon einwenig gesucht, doch mein Problem habe ich damit nicht lösen können.

Habe auch einige Test durchgeführt, zum Beispiel wenn ich Form2 öffnen lasse und diesen wieder schließe, ohne Form3 aufzurufen und dann Form1 schließe, Schließt sich die Application Super ( im Task-Manager ist die Anwendung nicht zu finden ). Doch sobald ich nach Form2, das Form3 öffne und Form1 schließe möchte, kommt jedesmal diese Fehelermeldung.

Ich hoffe ihr versteht mein Anliegen und könnt mir helfen.

Lg

N
232 Beiträge seit 2011
vor 10 Jahren

Wenn du Form2 als Child von Form1 erstellst dann schließt sich Form2 wenn du Form1 schließt.

1.696 Beiträge seit 2006
vor 10 Jahren

[FAQ] Kommunikation von 2 Forms sollte dir helfen.

Bitte beachte auch [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

4.221 Beiträge seit 2005
vor 10 Jahren

Der Fehler sagt ja ganz klar welches Problem Du hast. (vermutlich eine Collection geändert während Du darüber iterierst).

Im VisualStudio gehst Du auf Debuggen/Ausnahmen

Dann bei Common Language Runtime Exceptions bei Ausgelöst einen Haken setzten.

Dann lässt Du Deine Anwendung wieder laufen.

Wenn die Exception ausgelöst wird, dann stehst Du auf der verursachenden Zeile (vermutlich in einem foreach).

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

G
Gogeta Themenstarter:in
152 Beiträge seit 2012
vor 10 Jahren

[FAQ] Kommunikation von 2 Forms sollte dir helfen.

Dankeschön 😃

Lg

Edit.: In dem Post den du mir gegeben hast wird mein Thema garnicht behandelt!

@Programmierhans
habe ich getan, trotzdem kommt der fehler ^^

Danke^^

C
168 Beiträge seit 2010
vor 10 Jahren

wie Programmierhans schon gesagt hat, liegt es vermutlich an einer Foreach-Schleife in der du die Collection veränderts z.B. durch .Add() oder .Remove().

Wenn du in einer Schleife die entsprechende Collection verändern willst solltest du lieber eine FOR oder WHILE-Schleife verwenden.

Ohne weiteren Code lässt sich jedenfalls nicht weiter helfen bzw. genauere Aussagen treffen. 😃

Gruß
Crone

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

G
Gogeta Themenstarter:in
152 Beiträge seit 2012
vor 10 Jahren

Hi Crone,

es ist komisch ich habe KEINE foreach schleife in meiner Anwendung habe nur eine While-Schleife, sonst habe ich keine weiteren Schleifen.

Ich verändere nur einen zustand, der mir jetzt einfällt und zwar die in Settings.
mit, Properties.Settings.Default.Save();

sonst wüsste ich nicht wo -.-

lg

F
10.010 Beiträge seit 2004
vor 10 Jahren

Nein, es liegt am kompletten fehlen der Grundlagen.

Wenn Du im Form3 Closing event eine neue Form2 erstellst, musst du dich nicht wundern.

Bitte lies dir nochmal den link von vbprogger durch.

Auch stürtzt deine Anwendung nicht ab, sondern es ist so im Framework das wenn die erste Form geschlossen wird, geht auch die Softwar ezu.

Sind aber auch Grundlagen.

[Hinweis] Wie poste ich richtig?

N
232 Beiträge seit 2011
vor 10 Jahren

Hallo Gogeta,

vielleicht solltest du meine erste Antwort nicht einfach ignorieren sondern mal drüber nachdenken denn darin steckt die Lösung... 😃

Hinweis von herbivore vor 10 Jahren

Es drängt sich der Verdacht auf, dass hier verschiedenes verquickt wird. Ein Forum kann eine eigene und systematische Fehlersuche nicht ersetzen. Die Quelle und Ursache einer Exception sollte sich nun wirklich leicht finden und letztlich auch beheben lassen. Anschließend spielt es vermutlich gar keine Rolle mehr, dass bzw. warum der bisher fehlerhafte Code nun gerade beim Schließen von Forms angestoßen wird.

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 4 analog.

Thema geschlossen