Toon posts:

[C#.NET] System.StackOverflowException was unhandled

Pagina: 1
Acties:
  • 382 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

Ik heb de volgende var binnen een de class TCP welke ik gemaakt heb:
C#:
1
public TcpListener tcpl = new TcpListener(IPAddress.Any, 4000);


Deze staat globaal gedeclareerd binnen de class TCP en public omdat andere classes er ook toegang tot moeten hebben etc, je kent 't wel.

Hoe dan ook wanneer ik dit allemaal start dan krijg ik de volgende error:

An unhandled exception of type 'System.StackOverflowException' occurred in System.dll
Make sure you do not have an infinite loop or infinite recursion.

... etc.


Dit klopt niet helemaal aangezien de variabelen maar 1 keer wordt aangeroepen bij het aanmaken van de class, logischer wijs. Hoezo krijg ik deze error dan? Als ik die var aanmaak in het hoofdprogramma, ipv in de class TCP, dan gaat alles goed. Waarom gebeurd dit wanneer het binnen een andere class dan de hoofdclass wordt aangemaakt? De error wordt aangegeven op die exacte regel binnen de class TCP, niet in het hoofdprogramma met een verkeerde declaratie ofzo.

Alvast bedankt!

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:05
Heb je al eens gedebugged ? Wat zegt je stacktrace ?

https://fgheysels.github.io/


  • The Dutch Dude
  • Registratie: Juli 2002
  • Laatst online: 24-02 11:02

The Dutch Dude

Haiku Rules!

Je kan met Disassembly kijken wat het Framework allemaal ongeveer uitvreet en dan kan je vrij gemakkelijk zien of elke keer opnieuw dezelfde code wordt uitgevoerd.

Overmatig computergebruik heeft mijn fantasie gedood, dus ben ik niet in staat een interessante tekst hierneer te zetten.


Verwijderd

Topicstarter
Ik heb gedebugged, ik loop het programma stap voor stap na, 't moment dat 't daar aankomt...boem. Geen reden, geen aanleiden, niks. Gewoon knal huppa eruit. Hij loopt er ook niet 6 keer doorheen ofzo (wat de foutmelding logisch zou maken, maar dat doet ie niet).

Ik vind dit vreemd, mag je soms binnen een custom class geen tcplistener aanroepen ofzo? Zou toch moeten kunnen of doe ik wat fout? Magtie niet public?

Screenshot overigens:
http://www.wiegje.demon.nl/wazige_error.jpg

[ Voor 10% gewijzigd door Verwijderd op 03-02-2006 00:12 ]


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 11:44
Het beste kun je eens de stacktrace van die error bekijken...

Een stackoverflow houdt (bijna altijd) in dat er téveel functies 'op de stack staan'.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 13:30

mulder

ik spuug op het trottoir

Wat doet ie in die constructor dan?

oogjes open, snaveltjes dicht


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:05
Je bent ook zeker dat het die ene regel code is, en dat het exact dezelfde regel code is die je hier gepost hebt ?
Je werkt niet met een property die er bv zo uit ziet:
code:
1
2
3
4
5
public string MyProperty
{
     get { return _myProperty; }
     set { MyProperty = value; }
}

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik neem aan dat 't ook echt die regel is die de fout aangeeft, als ik die regel weghaal en alle verwijzingen naar de tcplistener ook weghaal, dan start het wel op. Ik gebruik geen properties nee.

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 07:04

BoAC

Memento mori

Ik heb de volgende var binnen een de class TCP welke ik gemaakt heb:
En hoe heet die class waarin je die TcpListener gebruikt?

Verwijderd

Topicstarter
Ik maak 'm aan binnen de class "TCP" en ik gebruik 'm (roep 'm dus aan) vanuit Form1, gewoon de standaard main class.

Okay, om het nog even waziger te maken dan het al is.. ik heb de tcpl verplaatst (incl. verwijzingen enzo) naar de Form1, nu loopt ie vast op
C#:
1
private Form1 MainForm = new Form1();

met dezelfde foutmelding.

Kan het soms zijn dat ik Form1 niet mag declareren binnen een andere class?

[ Voor 61% gewijzigd door Verwijderd op 03-02-2006 16:58 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:05
Tja, moeilijk om er iets zinnigs over te zeggen als we de context niet zien.
Volgens mij moet je ergens een oneindige loop hebben die steeds het zelfde object alloceert, of, zoals ik reeds zei, een property die steeds zichzelf zet ipv een member variable.

https://fgheysels.github.io/


Verwijderd

Kan het zijn dat je de TCP class instantieert binnen Form1? Telkens als TCP geinstantieerd wordt, instantieer je namelijk Form1. Als je daarin dus TCP instantieert, heb je een soort van loop met een SOE als gevolg.
Pagina: 1