Hei
Takker og bukker for Erlend!
Det er helt rigtigt som der bliver sagt, End kommandoen er noget skidt.
Den gør det at den afslutter det pågældende program med det samme.
Det vil sige, at der ikke er tid til at frigøre ressourcer der måtte være i
brug af dette program.
I den nuværende udgave af VB holder VB Runtime øje med de ressourcer der
bliver brugt, ved hjælp af noget man kalder "reference counting". Reference
counting foregår på den måde, at der for hver reference til et givent
objekt, tælles én op på dette objekts counter. Når en reference nedlægges (X
= nothing) falder counteren med én.
Når counteren når ned til nul, frigives den hukommelse som objektet har
brugt.
Nåe man bruger End, så får VB Runtime ikke lov til at nulstille disse
objektcountere, hvilket bevirker at man kan have "ugyldige" objekter
liggende i hukommelsen.
I den nye .NET er dette lavet om, da .NET anvender noget der hedder Garbage
Collection som er en lidt anden måde at frigive ressourcer på, men i VB som
den er nu, skal man altså holde sig fra at bruge End. Det eneste sted
(tidspunkt) hvor End har en berettigelse er i dit Design-miljø, hvor End
kommandoen svarer til at stoppe programmet på Stop knappen.
Håber det giver lidt lys over situationen...
/Carsten Suurland