[C#] Na Close van wondow nog meer opruimen?

Pagina: 1
Acties:

  • ione
  • Registratie: Februari 2004
  • Niet online
Hoi, op de volgende manier open ik een inlogschermpje. In dit scherm doe ik een Close.
Moet ik nou in de aanroepende class ook nog iets opruimen? Bijv. loginWindow op nullzetten oid?

fclsLogin loginWindow = new fclsLogin();
loginWindow.ShowDialog();

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Mag ik je verwijzen naar de Quickstart? Met zo een magere topic start kan ik niet meer zeggen dan: "Wat zegt de manual erover?"

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
De .net omgeving gebruikt garbage collection. Dit is een techniek die detecteerd of objecten nog in gebruik zijn, en zo niet, deze opruimen. Daarvoor hoef je dus niets expliciet op nul te stellen.
Op hooguit een statische object variable na; maar die wil je meestal toch tot aan het einde van het programma in geheugen hebben, dus dat doe je meestal niet

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Managed resources kunnen door de garbage collector vrijgegeven worden als de Finalizer aangeroepen wordt.
Echter, unmanaged resources moet je misschien zelf nog disposen.

In jouw geval van dat login-formpje zie ik niet direct iets wat jij nog zou moeten vrijgeven.

https://fgheysels.github.io/


  • Prozaq
  • Registratie: Juni 2000
  • Laatst online: 13-04 16:25
Het is netjes om ieder object dat een dispose methode heeft deze methode ook aan te roepen. Een form heeft een dispose methode, roep deze dus aan. Nou zal het in dit geval niet zo veel uit maken of je hem aanroept of niet, maar het is verstandig om er een gewoonte van te maken altijd de dispose aan te roepen.

edit:
uhm bij nader inzien.. de close die jezelf aanroep is in principe ook een dispose

[ Voor 14% gewijzigd door Prozaq op 20-06-2004 14:46 ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Dispose aanroepen is alleen nodig wanneer dat moet. Altijd dispose aanroepen is nergens voor nodig. Er zijn maar weinig objects in .NET die een expliciete dispose nodig hebben.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • misfire
  • Registratie: Maart 2001
  • Laatst online: 12-10-2024
Dot Net werkt inderdaad met een garbage collector, maar wachten op de finalizer vertraagt het vrijgeven van resources en geheugen. Beter is om een expliciete dispose uit te voeren, als je tenminste het object later niet opnieuw wilt gebruiken.

In C# is hier een erg mooie constructie voor, namelijk het using statement:

code:
1
2
3
using (fclsLogin loginWindow = new fclsLogin()) {
   loginWindow.ShowDialog();
}


Het using statement zal de Dispose() in een finally clause aanroepen (altijd dus), via de interface. Ook is op deze manier de scope van je variabele beperkt, dus je kunt ook niet per ongeluk later een disposed loginWindow aanspreken. Door de beperkte scope zal de variabele ook meteen uit scope zijn, dus je hoeft ook niks op null te zetten.

PS: Het is beter om klasses volgens vaste naamsconventies te benoemen. Het gebruik van PascalCase voor klasses is gebruikelijk. Het gebruik van Hongaarse notatie (beginnen met afkortingen) is taboe. Zoek maar eens naar FxCop, een tool van Microsoft, die dit soort dingen controleert.

[ Voor 16% gewijzigd door misfire op 20-06-2004 15:32 ]

Pagina: 1