
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...
"There's no point in being exact about something if you don't even know what you're talking about."
JOHN VON NEUMANN
Siamo italiani NO??
Allora scriviamo in ITALIANO!!!! |
|

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 ...
- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...
"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta) |
|

()
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 è.
|
|