Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Memoria e scaricamento form (un pò lungo)

Salve a tutti,
ho scritto un programma con VB6SP6 sotto WINXPPRO SP1 sempre attivo nella
barra delle applicazioni con un'icona. Al fine di diminuire l'occupazione
della memoria quando il programma non è in esecuzione (cioè quando c'è solo
l'icona nella barra applicazioni), ho suddiviso il programma in 2 form
principali: 1 gestisce l'icona, l'altro viene richiamato (form2.show) al
click dell'utente sull'icona della barra e chiuso al doppioclick dell'utente
sull'icona (Unload Form2). Ora: quando avvio l'applicazione la memoria
occupata (la vedo tramite task manager) è di 8 MB, appena faccio click
ovviamente mi schizza subito a 21 MB. Il problema è che quando scarico il
form2 la memoria occupata diminusce solo di pochi KB! Ho letto alcuni post
precedenti su questo NG. 1 in particolare del 14/3/00 suggeriva di impostare
il puntatore a nothing dopo aver scaricato il form:
Unload Me
Set frmPippo = Nothing
La stessa cosa viene ripetuta in un post del 13/6/99. Ho provato a fare
esattamente come suggerito (tra l'altro la cosa mi pareva anche abbastanza
logica), ma il problema persiste! Ho provato a scrivere un progettino di
prova (2 form semplicissimi) per essere certo che non dipendesse da altro e
ancora una volta mi ritrovo davanti allo stesso problema. Quindi mi rivolgo
a voi per chiedervi: come posso scaricare del tutto la form dalla memoria
senza dover suddividere il programma in eseguibili differenti? E ammesso di
dover per forza suddividire il programma in exe separati, come posso fare il
modo che comunichino tra loro?
GRAZIE A TUTTI
Antonio Mirarchi

 Antonio Mirarchi
Andrea

> Prova un pò a minimizzare la form... succede nulla? :-)
Azz... Se minimizzo la secondaria no, ma se minimizzo la primaria
l'occupazione della memoria è addirittura minore di quando ho solo la
primaria caricata!! Perchè? Questo non risolve il problema però... Io la
primaria l'ho sempre minimizzata (gestisce solo l'icona), il problema è
sulla secondaria...
Bhè... Comunque grazie mille!
Antonio Mirarchi

 Antonio Mirarchi
Andrea

 memoria libera.
Si infatti è così, però resta il fatto che io la principale c'è l'ho sempre
minimizzata... Quindi purtroppo nel mio caso non cambia molto.
Antonio Mirarchi

 minimizzata... Quindi purtroppo nel mio caso non cambia molto.
cambiamo genere:
1) recordset e simili che restano aperti?
2) altri oggetti non distrutti?
ciao
ugo

 2) altri oggetti non distrutti?
Uhm... Come controlli nel form main ci sono:
- 2 timer (che sono certo di aver disabilitato all'uscita del form)
- 2 label
- 1 progressbar
- 1 treeview
- 1 filelistbox
- 1 imagelist
- 1 image
A parte questi controlli ci sono solo 3 dichiarazioni API:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam
As Any) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias
"GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath
As String, ByVal lBuffer As Long) As Long
Private Declare Sub ReleaseCapture Lib "user32" ()
Ma comunque non dovrebbe essere niente che potrebbe occupare memoria
all'uscita dal form, giusto?
Antonio Mirarchi