Zum Inhalt springen
  • 0

C# ObjectDisposedException


Tician

Frage

Im Anhang and das Problem:

funktioniert mein Programm und lässt sich kompilieren, aber der GC macht mir Striche durch die Rechnung (ich benutze kein Dospose und auch kein Multithreading).

Wie gehabt (ich wiederhole es kurz) habe ich 2 Klassen (Forms), wobei Form1 eine Menüleiste hat die Form2 (genannt Settings) aufruft. Das funktioniert einmal - aber sobald jemand Settings schließt und erneut aufruft wird die Exception an diesem Punkt geworfen:

public partial class Form1 : Form
    {
        Settings form2 = new Settings();

        public Form1()
        {            
            InitializeComponent();
            
            try
            {
                ReadIniFile();
                
                //create Event for Settings-Close
                form2.FormClosed += Form2_FormClosed;
            }
            catch
            {
                MessageBox.Show("Initialisierung der ini-Datei fehlgeschlagen");
            }
        }

private void settingsToolStripMenuItem1_Click(object sender, EventArgs e)
        {            
            form2.iniText = iniText;
            form2.Show();          //hier Exception  
        }

Weiß jemand wie ich das verhindern kann und trotzdem sicher sein kann das beim Beenden des kompletten Programs auch wirklich nichts mehr den RAM belegt?

Ich weiß das eine Lösung wäre jedesmal eine neue Instanz zu erstellen, aber dann sind die labels (meine ich zumindest) leer die ich zu Beginn des Programs an Settings übergebe und auch mein Form-Closed Event würde nicht mehr funktionieren. Ideen wie ich dem Programm sagen kann das Form2 nicht weg geworfen werden soll wenn ich es schließe?

Link zu diesem Kommentar
Auf anderen Seiten teilen

9 Antworten auf diese Frage

Empfohlene Beiträge

  • 0

Gibt es eine Möglichkeit herauszufinden warum ich jedes mal wenn ich das Programm kompilieren möchte die Meldung bekomme das der Prozess nicht abgeschlossen werden kann weil der Prozess nicht auf eine Datei zugreifen kann weil ein anderer Prozess darauf zugreift? Nachdem die Meldung einmal weg geklickt wurde kompiliert das Programm einmal und beim nächsten mal kommt wieder die Meldung.

Hat das nicht auch mit dem GC zu tun? Müsste wenn ich das im Taskmanager richtig sehe ein

"Programmname.vshost.exe *32"

sein das da hängen bleibt.

Edit: Die Datei (der Prozess) ist es nicht, die Datei ist auch da wenn ich nur VS starte, muss also was anderes sein

Bearbeitet von Tician
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 44 Minuten schrieb Panawr:

Hast du denn vielleicht einfach die Datei die ganze Zeit offen? :D 

Das wäre jetzt natürlich die Schönste (und dämlichste), am einfachsten zu behebende Variante, aber nein hatte ich nicht^^

Ich hab den ganzen PC mal neu gestartet und jetzt scheint es zu funktionieren :)

Edit: Oder auch nicht, jetzt müsste ich wissen welche Datei gemeint ist in der Fehlermeldung weil das steht nirgendwo.

Bearbeitet von Tician
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Bei Beenden des Programms solltest du Application.Exit() aufrufen. Dann bleibt auch nichts "im Speicher hängen". Das Ergebnis, dass die Settings-Form liefert, sollte mit einem DialogResult abgehandelt werden. Ebenso sollte in Settings, wenn die Form abgehandelt ist, this.Close(); aufgerufen werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...