Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Schließen von Forms führt zum Absturz der Anwendung
Gogeta
myCSharp.de - Member



Dabei seit:
Beiträge: 152
Herkunft: Izmir

Themenstarter:

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

beantworten | zitieren | melden

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:
Fehler
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
private Nachricht | Beiträge des Benutzers
nicky
myCSharp.de - Member



Dabei seit:
Beiträge: 232

beantworten | zitieren | melden

Wenn du Form2 als Child von Form1 erstellst dann schließt sich Form2 wenn du Form1 schließt.
private Nachricht | Beiträge des Benutzers
vbprogger
myCSharp.de - Experte

Avatar #avatar-1820.gif


Dabei seit:
Beiträge: 1.696
Herkunft: NRW/DE

beantworten | zitieren | melden

[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.
---------
Bemerkung: ich beantworte keine Fragen via PM, denn das Forum soll ja was davon haben!
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
Gogeta
myCSharp.de - Member



Dabei seit:
Beiträge: 152
Herkunft: Izmir

Themenstarter:

beantworten | zitieren | melden

Zitat
[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^^
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Gogeta am .
private Nachricht | Beiträge des Benutzers
Crone
myCSharp.de - Member



Dabei seit:
Beiträge: 168

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Crone am .
Real programmers don't comment their code - it was hard to write, it should be hard to understand.
private Nachricht | Beiträge des Benutzers
Gogeta
myCSharp.de - Member



Dabei seit:
Beiträge: 152
Herkunft: Izmir

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.954

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
nicky
myCSharp.de - Member



Dabei seit:
Beiträge: 232

beantworten | zitieren | melden

Hallo Gogeta,

vielleicht solltest du meine erste Antwort nicht einfach ignorieren sondern mal drüber nachdenken denn darin steckt die Lösung... :)
private Nachricht | Beiträge des Benutzers

Moderationshinweis von herbivore (02.07.2013 - 14:03)

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.