Newsgroup: it.comp.lang.visual-basic
Titolo: Esaurimento risorse di Windows

Ho un problema con VB4 su Win 3.1: ho fatto un programma che rimane
acceso tutto il giorno.
Il problema che si presenta e' che dopo alcune ore le risorse
di Windows scendono progressivamente a zero. A quel punto l'unica
è uscire da Windows (non basta uscire dal programma). Ho anche usato
il metodo DBEngine.Idle che migliora le cose, ma NON le risolve.
Qualcuno può aiutarmi? Gradirei ricevere suggerimenti e/o
soluzioni sull'identificazione e sulla rimozione della
"spazzatura" inutilizzata rimasta in memoria... ancora meglio
se qualcuno sapesse come evitare di produrla la spazzatura!!!
                                         MauroBig


wrote:

Forse sono fuori strada ma... visto che nessuno ha un idea ci provo...
A me succedeva con VB5 perchè uscivo da un punto particolare della mia
procedura dimenticandomi di chiudere un oggetto WORD. Mi sono accorto
perchè nella lista dei processi attivi c'erano, dopo un po' una fila
di applicazioni WORD apparentemente attive ma.... fantasma.  
Ciao.
Marco Grignoli   
sinf...@tin.it
 
(Togliere NOSPAM)

 di applicazioni WORD apparentemente attive ma.... fantasma.  
Io invece ho lo stesso problema nella stessa configurazione VB4 + Win3.11 +
Oracle 7.
Le risorse decadono progressivamente fino al caos totale.
Ho provato spezzare un unico programma in tanti programmini, ho usato
l'accorgimento del dbengine.idle, sui moduli in cui è presente un oggetto
data prima di chiudere rendo nullo l'oggetto (Set dtaClienti.Recordset =
Nothing),
ma il risultato è che il momento del caos si allontana, ma il problema
rimane.
Come extrema ratio sto pensando di migrare in VB3
Saluti
Silvio Sorrentino 


Questo è un problema tipico di windows 3.x, che è stato praticamente
risolto col 95. Le "risorse" sono due aree di memoria di 64K l'una, se
ricordo bene. Intanto sarebbe utile sapere quale delle due aree si
riempie: una si chiama risorse user, l'altra risorse gdi. Nella prima
dovrebbero finire le finestre usate (finestre nel senso di Windows,
quindi praticamente ogni control corrisponde ad una finestra). Nella
seconda dovrebbero finire cose come font, pennelli e altri oggetti
grafici. Non sono sicurissimo di questo perché è parecchio che non ci
penso più, ma dovrebbe essere così.
Quando un programma crea uno di questi oggetti consuma un po' di
spazio in queste aree. Quando l'oggetto non serve più lo elimina e si
recupera lo spazio.
Come puoi immaginare i problemi nascono quando si creano oggetti senza
più eliminarli.
Credo che dovresti cercare un programma in grado di fornire questi
dati in tempo reale e provare ad indagare nel programma.
I candidati ideali sono quelle parti di programma che vengono eseguite
più volte. Probabilmente non elimini correttamente qualcosa che hai
creato.
C'è anche la possibilità che sia proprio colpa di VB: in questo caso
puoi vedere se hai la versione 4.0A: si riconosce perché sul CD le
date sono di gennaio 1996 invece che del 1995. Se non è così puoi
chiedere l'aggiornamento.
Potrebbe anche essere colpa di qualche OCX.
Insomma, ti conviene cercare di riprodurre il problema con un
programma semplificato.
Ciao
--------------------------------------------------------------------
Fulvio Senore
Eliminate "zz" dall'indirizzo e-mail per scrivermi (spammers...)
Remove "zz" from e-mail address to write me (spammers...)
--------------------------------------------------------------------