Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 06:51

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C#] Programm schließt garnicht

Discussion on [C#] Programm schließt garnicht within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
_Roman_'s Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
[C#] Programm schließt garnicht

Hi,

ich bin grad an einem kleinen Programm dran und seit dem Serialisieren der Einstellungen, lässt sich das Programm garnicht mehr schließen. Ob ich auf den Button Close drücke oder über das X, geht einfach nicht. Die einzige Möglichkeit ist es, den Prozess zu beenden. Das komische ist ja, dass keine Fehlermeldung kommt oder irgendeine Exception oder so. Hier wären mal die wichtigsten Codeabschnitte dafür:

Code:
        private void MainWindow_Load(object sender, EventArgs e)
        {
            if (System.IO.File.Exists("C:\\temp\\MM_data"))
            {
                MM_Methods.Access = object_Serialize.DeserializeMovies();
                lb_movies.Items.Add(MM_Methods.Access.lb_movies);
            }
        }
Code:
        private void MainWindow_FormClosing(object sender, FormClosingEventArgs e)
        {
            object_Serialize.SerializeMovies(MM_Methods.Access, "C:\\temp\\MM_data");
        }
Code:
        private void button_close_Click(object sender, EventArgs e)
        {
            this.Close();
        }
Code:
    public class Serializer
    {
        //Serialize
        public void SerializeMovies(Object objekt, string path)
        {
            BinaryFormatter binFormatter = new BinaryFormatter();
            FileStream fStream = new FileStream(path, FileMode.Create, FileAccess.Write);
            binFormatter.Serialize(fStream, objekt);
            fStream.Close();
        }
        //

        //Deserialize
        public MM_SerializedData DeserializeMovies()
        {
            BinaryFormatter binFormatter = new BinaryFormatter();
            FileStream fStream = new FileStream("C:\\temp\\mm_data", FileMode.Open, FileAccess.Read);
            MM_SerializedData object_deserialize = (MM_SerializedData)binFormatter.Deserialize(fStream);
            fStream.Close();

            return object_deserialize;
        }
        //
    }
Die Klasse, die serialisiert werden soll, ist auch mit [Serializable()] markiert.
Vor allem habe ich noch ein anderes Programm, wo das ganze klappt.

Mit freundlichen Grüßen
_Roman_ is offline  
Old 07/27/2013, 16:10   #2
 
elite*gold: 0
Join Date: May 2010
Posts: 88
Received Thanks: 23
Der Grund für sowas ist meist nur eine Methode, die den Hauptthread blockiert.

bist du dir Sicher, dass von den Streams keiner in einen Loop landet oder immernoch was liest/schreibt?

Mal bissle debuggen
Easy-Emu is offline  
Old 07/27/2013, 16:18   #3
 
_Roman_'s Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
Gucke ich gleich nochmal nach, wobei die Serialisierung + Deserialisierung kopiert ist von meinem anderen Programm. Debug kommt auch nichts leider
_Roman_ is offline  
Old 07/27/2013, 16:19   #4
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Abgesehen davon using, keine hardgecodeten Pfafe und die .NET Naming Convention verwenden.
Quote:
Debug kommt auch nichts leider
Etwas genauer?
Schlüsselbein is offline  
Old 07/27/2013, 16:26   #5
 
_Roman_'s Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
Was meinst du mit using. Soll ich die das using Zeug zeigen? Ich debugge immer und eine Error oder ähnliches kommt nicht

using vom Backend
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Win32;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
und vom Frontend
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using MM_Back;
_Roman_ is offline  
Old 07/27/2013, 16:27   #6
 
elite*gold: 0
Join Date: May 2010
Posts: 88
Received Thanks: 23
Zum Debuggen gehört auch Testing, sorich bestimmt Method Kommentieren, damit diese nicht aufgerufen werden und schauen ob das Ganze evtl. dadurch blockiert wird.
Easy-Emu is offline  
Thanks
1 User
Old 07/27/2013, 16:29   #7
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Debuggen: Durch den Code steppen und schauen, wo es hängt. Ggf den Stack im Auge behalten.
Quote:
Was meinst du mit using. Soll ich die das using Zeug zeigen? Ich debugge immer und eine Error oder ähnliches kommt nicht


Mal ganz allgemein: Besteht Interesse an einem Tutorial übers Debugging? (hab so den Eindruck, als würden viele User hier den Debugger unterschätzen)
Schlüsselbein is offline  
Thanks
1 User
Old 07/27/2013, 16:37   #8
 
_Roman_'s Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
Ich hätte Interesse an so einem Tutorial.
Das mit der using Anweisung verstehe ich nicht so recht, also den Nutzen

Edit: Habe grade den Methodenaufruf bei MainWindow_FormClosing auskommentiert und es hat geklappt. Jetzt muss ich nurnoch rausfinden warum das so ist
_Roman_ is offline  
Old 07/27/2013, 16:44   #9
 
elite*gold: 0
Join Date: May 2010
Posts: 88
Received Thanks: 23
Dann gehst du einfach weiter in die Methode wo das ganze passiert und kommentierst da weiter
Easy-Emu is offline  
Thanks
1 User
Old 07/27/2013, 17:36   #10
 
_Roman_'s Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
Hab jetzt per Haltepunkt rausgefunden, dass der einfach aus der Funktion rausspringt, nachdem die fstream Datei erstellt wurde, also hier:

Code:
FileStream fStream = new FileStream(path, FileMode.Create, FileAccess.Write);
Dann versucht der zu closen, aber die Datei ist ja noch offen. Verstehe nur nicht warum
_Roman_ is offline  
Old 07/27/2013, 17:53   #11
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Auskommentieren musst du normal nichts. Beim Debuggen reicht es meistens, einfach durchzusteppen und dabei halt so tief zu gehen, bis der Fehler auftritt.

Quote:
Dann versucht der zu closen, aber die Datei ist ja noch offen. Verstehe nur nicht warum
Check das msdn für das Verhalten beim Erstellen des Objekts und die Parameter auf gülitgkeit.
Ausserdem sollte man u.a. genau wegen sowas using verwenden.

.NET war etwas länger her, aber so in der Arts funktionierte es:
Code:
using(var fstream = new FileStream(...))
{
    // mache irgendwas mit fstream
}
Dabei gibt das Objekt automatisch die Ressource frei, wenn es regulär out of scope geht oder eine Excpetion auftritt. Wenn du etwas C++ bewandert bist, denke einfach mal an RAII.
Schlüsselbein is offline  
Thanks
1 User
Old 07/27/2013, 17:55   #12
 
_Roman_'s Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
Und was hat dann das using für nen Sinn?

Edit: Leider geht das auch nicht mit dem using. Die Parameter sind richtig vom Filestream.
_Roman_ is offline  
Old 07/27/2013, 22:54   #13
 
kissein's Avatar
 
elite*gold: 0
Join Date: Sep 2005
Posts: 427
Received Thanks: 87
Man muss nichtmehr manuell disposen. Am Ende der using Scope übernimmt der GC das für einen, sofern von IDisposable abgeleitet wird.
kissein is offline  
Old 07/27/2013, 23:43   #14
 
_Roman_'s Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
Ah verstehe, aber das löst leider nicht mein Problem Ich probiere morgen mal paar andere Positionen aus, wo ich serialisieren könnte
_Roman_ is offline  
Old 07/28/2013, 00:26   #15
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Quote:
Man muss nichtmehr manuell disposen. Am Ende der using Scope übernimmt der GC das für einen, sofern von IDisposable abgeleitet wird.
Das ist falsch. IDisposable ist ein Interface, welches die Methode Dispose bereitsteillt. Falls der GC irgendwas aufruft, dann sowieso zu einem unbestimmten Zeitpunkt.

Siehe:


Also: Sich das Leben einfacher machen und using verwenden.

@TS: Hast du die Berechtigungen für die Datei? Bei welcher Methode schmiert dir dein Programm jetzt genau ab? Irgendwas musst du ja sehen können.
Schlüsselbein is offline  
Reply


Similar Threads Similar Threads
Programm schließt nicht richtig
10/16/2011 - AutoIt - 13 Replies
Hi, ich hab mir ein Programm gebastelt. Dieses erstellt ein paar Accounts. doch jetzt wenn ich es mit dem X in der Koda Form beende schließt sich zwar das Fenster aber der Prozess ist immerncoh da und die CPU auslastung steigt auf einmal auf 50% an.Das gleich passiert auch wenn ich auf Button2 drücke und auch mit Exit in der Taksleiste glaub ich... Woran kann es liegen? Hier mal meine While schleife:While $SUCESS=TRUE sleep(10) $nMsg = GUIGetMsg() Switch $nMsg Case...
Treasure erstellen garnicht SO Sicher bzw garnicht?
09/23/2011 - Off Topic - 17 Replies
Hey, also ich wollt mal sagen das das Handeln durch Treasures kein bisschen Sicher für den Verkäufer der Treasure ist. Man kann doch einfach mit seinem E*gold z.B. für 1500 e*gold 50€ psc kaufen. Sagen wir mal so: Der richtige Psc Code ist in der Treasure. Der Scammer kauft sie und hat viele possitive Tbm+Meditations. Der Scammer telefoniert gerade mit seinem Kumpel der auf der anderen Seite auf der er Paysafe Homepage offen hat. Der Scammer macht ein Video kauft die Treasure, sagt am tel...
[Frage]C++ Programm schließt sich bei richtiger Eingabe
02/13/2011 - C/C++ - 0 Replies
Edit: Fehler gefunden und behoben!!!
suche ein programm das redvex error nachricht window schließt.
11/19/2010 - Diablo 2 - 3 Replies
hallo zusammen suche ein programm das redvex error msg window schließt so das redvex restarter übernehmen kann :) clickoff funktioniert nicht richtig. das programm von chuja läuft auch nicht so wie es soll....



All times are GMT +1. The time now is 06:55.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.