|
You last visited: Today at 05:45
Advertisement
C# Problem
Discussion on C# Problem within the .NET Languages forum part of the Coders Den category.
11/26/2013, 21:48
|
#1
|
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
|
C# Problem
Heya
ich habe folgendes Problem. Bei FormClosing sollen 2 Funktionen aufgerufen werden, eine macht das Programm, aber danach springt es direkt zu Close.
Code:
//Variables
MM_Methods object_MM = new MM_Methods();
Serializer object_Serialize = new Serializer();
string str_path = "C:\\temp\\MM_data";
//
Code:
private void button_close_Click(object sender, EventArgs e)
{
this.Close();
}
private void MainWindow_FormClosing(object sender, FormClosingEventArgs e)
{
object_MM.serializeMovies(lb_movies);
object_Serialize.SerializeMovies(MM_Methods.Access, str_path);
}
Der springt nach
Code:
object_MM.serializeMovies(lb_movies);
direkt zu button_close_Click
Code:
FileStream fStream;
StreamWriter sw;
StreamReader sr;
MM_SerializedData object_deserialize;
//Serialize
public void SerializeMovies(MM_SerializedData objekt, string path)
{
BinaryFormatter binFormatter = new BinaryFormatter();
fStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
sw = new StreamWriter(fStream);
binFormatter.Serialize(fStream, objekt);
sw.Close();
fStream.Close();
}
|
|
|
11/26/2013, 22:58
|
#2
|
elite*gold: 2932
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
|
step by step debuggen und schauen ab welcher zeile etwas überprungen wird
|
|
|
11/27/2013, 15:03
|
#3
|
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
|
Was Tolio sagt 
Debuggen ist wiiiichtig.
Davon ab, hat dein Zeug ein Errorhandling ?
Grundsätzlich sollte bei File/Io von Fehlern ausgegangen werden -> try catch, einfach damit es dir nicht irgendwann in Rücken fällt.
|
|
|
11/27/2013, 15:34
|
#4
|
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
|
Wenn ich nachher Zeit hab, gehe ich nochmal durch, wobei ich das gestern auch gemacht hab mitm Haltepunkt. Das try-catch Zeug mach ich noch rein, danke für die Erinnerung. Das Problem ist halt, dass er garnicht erst in diese Funktion reingeht. Der springt nach der ersten Funktion direkt zum button_close_click Event. Aber ich gucke nachher nochmal genauer
|
|
|
11/27/2013, 21:29
|
#5
|
elite*gold: 141
Join Date: Dec 2009
Posts: 554
Received Thanks: 3,920
|
theoretisch könntest du auch versuchen, das Event formClosed zu verwenden?
|
|
|
11/27/2013, 23:33
|
#6
|
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
|
Okay hab was festgestellt.. Bin das nochmal genau Schritt für Schritt durchgegangen und mir ist aufgefallen, dass das Programm diese 2 Stücke weglässt (die ich groß geschrieben hab also die zwei "}" am Ende:
Funktion, um die Liste zu füllen
Code:
//Data to serialize
public void serializeMovies(ListBox movies)
{
foreach (string entry in movies.Items)
{
Access.list_movies.Add(entry);[SIZE="6"]
}
}[/SIZE]
//
Nachdem es Access.list_movies.Add(entry); gemacht hat, springt es direkt zu this.close() was man oben findet. Heißt für mich also, dass es die Funktion garnicht richtig beendet. Verstehe nur nicht warum
|
|
|
11/28/2013, 13:13
|
#7
|
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
|
Evtl ne Exception ?
|
|
|
11/28/2013, 15:35
|
#8
|
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
|
Kommt nix beim durchgehen..
|
|
|
11/28/2013, 18:42
|
#9
|
elite*gold: 0
Join Date: Sep 2005
Posts: 427
Received Thanks: 87
|
Evtl. hat die movies.Items nur 1 Eintrag ?
|
|
|
11/28/2013, 19:05
|
#10
|
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
|
Was meinst du damit? Ich habe zum Test nur ein Beispielvideo genommen und es damit versucht. Was ist daran so schlimm, wenn da nur ein Eintrag ist?
|
|
|
11/28/2013, 19:08
|
#11
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
Wird foreach nur einmal durchlaufen ? Und du wunderst dich warum das nur einmal durchlaufen wird ....
|
|
|
11/28/2013, 19:17
|
#12
|
elite*gold: 0
Join Date: Sep 2005
Posts: 427
Received Thanks: 87
|
Quote:
|
Nachdem es Access.list_movies.Add(entry); gemacht hat, springt es direkt zu this.close() was man oben findet.Heißt für mich also, dass es die Funktion garnicht richtig beendet. Verstehe nur nicht warum
|
Quote:
|
Ich habe zum Test nur ein Beispielvideo genommen und es damit versucht. Was ist daran so schlimm, wenn da nur ein Eintrag ist?
|
Was wird den noch erwartet ? Nach diesen Informationen liefert der Code genau was er machen sollte.
//edit: habs mir nochmal durchgelesen, wenn ich richtig liege bezieht sich der OP auf {}. Wenn ja, hier durchlesen http://de.wikipedia.org/wiki/Variabl...en_.28Scope.29 und
|
|
|
11/30/2013, 12:25
|
#13
|
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
|
Ich verstehs nicht.. Mir ist klar, dass die Liste nur einen Eintrag haben kann, wenn ich nur 1 Video reinmache. Aber warum springt es denn direkt nach "Access.list_movies.Add(entry)" in "this.close()" und nicht zur nächsten Funktion?
|
|
|
11/30/2013, 12:38
|
#14
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
Bei einem Element wird foreach halt nur einmal durchlaufen und wenn du danach this.close stehen hast, wird halt this.close ausgeführt. (Pack doch einfach mal 3 Elemente rein und debugge dann o.o) Was gibt es daran nicht zu verstehen ? Oder verstehe ich grade was falsch ?
|
|
|
11/30/2013, 13:48
|
#15
|
elite*gold: 0
Join Date: May 2010
Posts: 1,620
Received Thanks: 237
|
Hab mal ein zweites Element reingemacht und der hat die foreach Schleife auch nur einmal durchlaufen
|
|
|
All times are GMT +1. The time now is 05:46.
|
|