|
You last visited: Today at 06:51
Advertisement
[C#] Programm schließt garnicht
Discussion on [C#] Programm schließt garnicht within the .NET Languages forum part of the Coders Den category.
07/27/2013, 14:00
|
#1
|
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
|
|
|
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
|
|
|
07/27/2013, 16:18
|
#3
|
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
|
|
|
07/27/2013, 16:19
|
#4
|
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?
|
|
|
07/27/2013, 16:26
|
#5
|
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;
|
|
|
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.
|
|
|
07/27/2013, 16:29
|
#7
|
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)
|
|
|
07/27/2013, 16:37
|
#8
|
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
|
|
|
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
|
|
|
07/27/2013, 17:36
|
#10
|
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
|
|
|
07/27/2013, 17:53
|
#11
|
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.
|
|
|
07/27/2013, 17:55
|
#12
|
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.
|
|
|
07/27/2013, 22:54
|
#13
|
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.
|
|
|
07/27/2013, 23:43
|
#14
|
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
|
|
|
07/28/2013, 00:26
|
#15
|
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.
|
|
|
 |
|
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.
|
|