Alfonso (Normal User)
Rookie
Messaggi: 37
Iscritto: 16/05/2009
|
Ciao a tutti
Per liberare la memoria, in Vb6 quando si chiude una form è mia pratica aggiungere in Form_Unload, Set Form = Nothing e per il form di avvio (per es MainForm):
For i = Forms.Count - 1 To 1 Step -1
Unload Forms(i)
Next
Set MainForm = Nothing
End
Nella conversione In Vb8 queste istruzioni sarebbero tradotte in
Private Sub MainMenu_FormClosing(ByVal .... ecc)
' ----- per chiudere in sequenza le form aperte e poter procedere al salvataggio di eventuali modifiche a database
While My.Application.OpenForms.Count > 1
i = My.Application.OpenForms.Count - 1
My.Application.OpenForms(i).Close()
End While
' -------- per forzare il garbage
Form.Dispose()
Application.Exit()
end sub
Ma sono necessarie?
Vb8 è così intelligente che gli basta Form.Close() per effettuare automaticamente Form.Dispose() ?
E (come mi sembra di capire) Application.Exit() procede alla chiusura sequenziale di tutte le form aperte prima di chiudere il programma?
Grazie in anticipo per i chiarimenti.
|
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da Alfonso:
Ciao a tutti
Per liberare la memoria, in Vb6 quando si chiude una form è mia pratica aggiungere in Form_Unload, Set Form = Nothing e per il form di avvio (per es MainForm):
For i = Forms.Count - 1 To 1 Step -1
Unload Forms(i)
Next
Set MainForm = Nothing
End
Nella conversione In Vb8 queste istruzioni sarebbero tradotte in
Private Sub MainMenu_FormClosing(ByVal .... ecc)
' ----- per chiudere in sequenza le form aperte e poter procedere al salvataggio di eventuali modifiche a database
While My.Application.OpenForms.Count > 1
i = My.Application.OpenForms.Count - 1
My.Application.OpenForms(i).Close()
End While
' -------- per forzare il garbage
Form.Dispose()
Application.Exit()
end sub
Ma sono necessarie?
Vb8 è così intelligente che gli basta Form.Close() per effettuare automaticamente Form.Dispose() ?
E (come mi sembra di capire) Application.Exit() procede alla chiusura sequenziale di tutte le form aperte prima di chiudere il programma?
Grazie in anticipo per i chiarimenti. |
Scusa, ma cosa c'entra vb6 o vb8 nella sezione vb.net?? Per quei linguaggi c'è una sezione apposita! |
|
Alfonso (Normal User)
Rookie
Messaggi: 37
Iscritto: 16/05/2009
|
Vb8 per me è Visual Basic Express 2008 che credo proprio faccia parte dell'ambiente .NET
Se no dove lo posto?
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
non ne sono sicuro al 100% ma ci pensa il garbage collector a gestire la memoria e a chiamare le giuste dispose.
tu limitati a chiudere il form e basta.
application.exit() invece dovrebbe chiudere tutti i form però solo quando sono stati elaborati tutti i messaggi nella coda di attesa...
|
|
GoLDBeRG (Ex-Member)
Expert
Messaggi: 331
Iscritto: 19/12/2005
|
quando devi risparmiare memoria ram il vb.net ti mette di brutto i bastoni tra le ruote... l'ho scoperto a mie spese... ma l'ho fregato!!!
se hai un form basta fai il .close ci pensa lui a liberarle se invece come me hai una classe ad esempio
con 50 attribbuti o array quindi una classe molto pesante devi fare prima di dimentikarla il .Finalize che ordina al garbage collector di mettere in coda la liberazione ram di quella classe, non è detto che lo faccia subito, ma lo farà, cerca di usare il dispose e il finalize dove piu ti è possibile e quando non puoi azzera le variabili usando ad esempio dim casa as string= "" o dim pippo as object = nothing
|
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da Alfonso:
Vb8 per me è Visual Basic Express 2008 che credo proprio faccia parte dell'ambiente .NET
Se no dove lo posto? |
Excuse moi...pensavo si trattasse di vb |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da Alfonso:
Vb8 per me è Visual Basic Express 2008 che credo proprio faccia parte dell'ambiente .NET
|
E' sicuramente VB.NET, ma la versione VB8 equivale a VB.NET 2005 ... mentre la VB9 e' la VB.NET 2008 ... |
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da theprogrammer:
Postato originariamente da Alfonso:
Vb8 per me è Visual Basic Express 2008 che credo proprio faccia parte dell'ambiente .NET
|
E' sicuramente VB.NET, ma la versione VB8 equivale a VB.NET 2005 ... mentre la VB9 e' la VB.NET 2008 ... |
Capito... |
|
Alfonso (Normal User)
Rookie
Messaggi: 37
Iscritto: 16/05/2009
|
Allora io che uso Visual Basic 2008 Express devo riferirmi a questo ambiente con l'abbreviazione VB9?
Comunque per il mio quesito, credo di capire che più .close(), .dispose(), .finalize() metto meglio è.
|
|