/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
End or Unload
Fra : Old News


Dato : 11-01-04 17:44

Hvad er grunden til at man ikke må bruge END når man afslutter sit program,
men i stedet for skal bruge Unload Me i stedet for. ?

Og skal man lukke alle sine Form på denne måde. ?





 
 
Tomas Christiansen (11-01-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 11-01-04 18:23

Old News skrev:
> Hvad er grunden til at man ikke må bruge END når man afslutter sit
program,
> men i stedet for skal bruge Unload Me i stedet for. ?

Uha! Du puster til gløderne med det spørgsmål.

Lad os lige se hvad MS selv siger om den (fra VB's dokumentation: "End
Terminates execution immediately. Never required by itself...".

Envidere: "Note The End statement stops code execution abruptly, without
invoking the Unload, QueryUnload, or Terminate event, or any other Visual
Basic code. Code you have placed in the Unload, QueryUnload, and Terminate
events of forms and class modules is not executed. Objects created from
class modules are destroyed, files opened using the Open statement are
closed, and memory used by your program is freed. Object references held by
other programs are invalidated."

> Og skal man lukke alle sine Form på denne måde. ?

Der står desuden: "The End statement provides a way to force your program to
halt. For normal termination of a Visual Basic program, you should unload
all forms. Your program closes as soon as there are no other programs
holding references to objects created from your public class modules and no
code executing."

Håber at det giver et fyldelstgørende svar. Hvis ikke vil jeg gerne uddybe.

-------
Tomas



Jens Vestergaard (11-01-2004)
Kommentar
Fra : Jens Vestergaard


Dato : 11-01-04 18:27

"Old News" <jhdata@mail.dk> skrev i en meddelelse
news:40017d42$0$29321$edfadb0f@dread15.news.tele.dk...
> Hvad er grunden til at man ikke må bruge END når man afslutter sit
program,
> men i stedet for skal bruge Unload Me i stedet for. ?
>

Hvis du bevidstløst bruger Unload på alle dine Forms, opnår du ikke ret
meget mere end ved at bruge End.

Formålet med IKKE at bruge End er derimod, at der i næsten alle apps er
'ting', der skal ryddes op i, f.eks. recordsets/databaser/filer, der skal
lukkes, objekter, der unloades eller sættes til Nothing osv. osv.

Hvis man bruger End, sker denne oprydning ikke, og det kan have ubehagelige
følger. Bruger man derimod Unload, kaldes formens QueryUnload og Unload
events, hvor man passende kan placere sin 'oprydning' - og i QueryUnload
også tage stilling til, om der er noget, der forhindrer, at programmet kan
lukke.

Uanset, hvor meget kode, du placerer i Unload og QueryUnload, så udføres
dette ikke, hvis du bruger End.

--
mvh
Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
www.railsoft.dk
Døgnets jernbanenyheder: www.railsoft.dk/medier.asp



Kenneth (11-01-2004)
Kommentar
Fra : Kenneth


Dato : 11-01-04 20:55

Grunden er at END afslutter programmet med det samme, mens en almindelig
nedlukning kører alle terminate events. Jeg har ikke selv haft problemer med
at anvende END, og den flusher også alle fil buffere, og lukker
tilsyneladende alle handles. Alligevel er det ret dårlig stil, at man ikke
afslutter alle igangværende processer manuelt, så jeg kan kun anbefale at du
ikke anvende END. Følgenden kode, kan i langt de fleste tilfælde bruges som
en erstatning for END

Dim oFrm as Form

For Each oFrm in Forms
Unload oFrm
Next oFrm

Mvh, Kenneth


"Old News" <jhdata@mail.dk> skrev i en meddelelse
news:40017d42$0$29321$edfadb0f@dread15.news.tele.dk...
> Hvad er grunden til at man ikke må bruge END når man afslutter sit
program,
> men i stedet for skal bruge Unload Me i stedet for. ?
>
> Og skal man lukke alle sine Form på denne måde. ?
>
>
>
>



Tim Sørensen (12-01-2004)
Kommentar
Fra : Tim Sørensen


Dato : 12-01-04 07:28

"Kenneth" <rayman_dk@email.com> wrote
> Dim oFrm as Form
>
> For Each oFrm in Forms
> Unload oFrm
> Next oFrm


Eller endnu nemmere:

For Each Form In Forms
Unload Form
Next

Det korte af det lang er; brug ikke End.

Hvis man en dag står med en Subclassed form eller
controller, risikerer man jo også at crashe hele VB IDE'et.


--
Mvh.... Tim Sørensen
http://www.dondata.dk/



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408186
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste