2010-05-06 18 views
12

Napisałem kod w asp.net, który odczytuje dane z plików i narysuje wykres.Nieobsługiwany wyjątek typu "System.StackOverflowException" wystąpił w mscorlib.dll

To działało, ale po pewnym czasie, gdy uruchamiam program, to wyjątek powstać

„nieobsługiwany wyjątek typu«System.StackOverflowException» wystąpił w pliku mscorlib.dll”

w tym oświadczenie w kodzie:

if (File.Exists(fName)) <----(here is the exception) 
{ 
    stream = File.Open(fName, FileMode.Open); 
    g_day = Deserialize(stream); 
    stream.Close(); 
    int cn = 0; 
    if (g_day.Values.Count != 0) 
     cn = g_day.Values[g_day.Values.Count - 1].Value; 
    Label1.Text = cn.ToString(); 
} 
+0

Skorzystaj z funkcji formatu edytora, abyśmy mogli przeczytać Twój kod. – mwilson

+1

Czy ten fragment kodu jest częścią funkcji 'Deserialize()'? –

+1

której wersji .NET? Czy możesz też wysłać ślad stosu? – Paolo

Odpowiedz

36

Twoja funkcja prawdopodobnie nazywa się rekurencyjnie nieskończoną liczbę razy. Czasami dzieje się to pośrednio (wywołujesz metodę w BCL i odsyłasz do kodu, a to się powtarza). File.Exists prawdopodobnie nie jest winowajcą. Spójrz na stos wywołań, gdy wystąpi błąd.

+0

doskonałe! szybka naprawa – Nirman

+0

Po prostu zapytała i wyszła! Doskonała odpowiedź! –

Powiązane problemy