Newsgroup: it.comp.lang.visual-basic
Titolo: [?] - Errore in chiusura

Salve,
ho un problemuccio. Ma va!
Ho terminato il mio programma, controllato, verificato,
provato...funziona.
Allora l'ho compilato. Bene ora quando chiudo il programma si genera un
errore.
La classica finestra : "Questo programma ha eseguito un'operazione non
valida..."
Precisamente un errore di pagina nel Kernel32.Dll, errore che non si
verifica in fase
di debug.
Fatti tutti i controlli ho scoperto che l'errore si verifica dopo la
fine del mio codice.
Ho anche fatto particolare attenzione a chiudere tutti i riferimenti
agli oggetti, alle form, ecc nel giusto ordine. 
Nulla, l'errore si verifica ancora.
Qualcuno mi puņ aiutare? vi č gią capitato? Ma proprio alla fine doveva
succedere???
Ciao e grazie...
:-) Hd (-:

succedere???
SI, mi è già capitato!!!  E l'arrabbiatura è stata parecchia.
Spero che la mia esperianza possa tornarti utile.
Il mio problema, che inizialmente si verificava solo in chiusura della
applicazione ma che in un secondo tempo anche in apertura, era dovuto ad un
cavolo di TIMER, il timer che faceva girare tutta l'applicazione, chiamando
i vari gestori dei diversi compiti del programma.
Infatti accadeva che mentre creavo tutti gli oggetti, qualcuno di questi, a
mia insaputa (programmi di terze parti) facevano dei DoEvents, quindi nel
bel mezzo della allocazione e della deallocazione degli oggetti, arrivava un
evento di TIMER, il quale andava a chiamare quegli stessi oggetti che non
erano + in grado di lavorare correttamente.
Soluzione del problema: timer.enabled = false
In pratica, faccio partire l'applicazione col timer spento e lo accendo solo
quando tutti gli oggetti sono stati allocati, e lo spengo prima di iniziare
la deallocazione, cosi' facendo evito che DoEvents non previsti provochino
problemi.
Il fatto che il difetto non capitava in interpretato... . . è un M$ mistero
:-))
Spero di esserti stato utile.
Ciao
Ettore Maronese
il -MES-
http://www.maronese.com/mes
Sul Sito Comune di questo NG trovi una marea di info ed esempi
http://www.murialdo.it/it_lang_vb

> Soluzione del problema: timer.enabled = false
Grazie dell'interessamento, peccato che non abbia timer. Cmq
ricontrollerò la creazione degli oggetti
per l'n-esima volta...
Ho però scoperto che l'errore si verifica anche se il programma viene
interrotto da un altro 
errore, e quindi terminato dal sistema.
Boh
Cmq il pc sta tremando, penso capisca che a breve cadrà, ops
accidentalmente, dalla scrivania...
Ciao 
:-) Hd (-:

...

- Accertati che DoEvents non desiderati ti facciano rientrare il controllo
in qualche evento nel momento della deallocazione
- Non terminare il programma con END, ma semplicemente chiudento tutti i
forms (anche quelli caricati in memoria e non visibili)
Ciao
By -MES-   Maronese Ettore
http://www.maronese.com/mes
(con OCX per stampare i recordset)
Sito Comune di programmatori Visual Basic
http://www.murialdo.it/it_lang_vb

 forms (anche quelli caricati in memoria e non visibili)
Non uso mai END. Chiudo sempre tutti i forms in sequenza.
Ho scoperto che il problema non si verifica se carico tutti i miei forms
all'inizio. 
Per poi scaricarli nel giusto ordina alla fine. Mi sembra uno spreco di
risorse. 
Ma così almeno sembra andare. Chissà che non riesca ad individuare la
causa.
Per i DoEvents invece è un problema, in quanto ne uso parecchi, per il
semplice fatto 
che mi sono utili per individuare le giuste misure dei MDIForm. Non ho
ancora capito il perchè,
ma utilizzandoli mi sballa tutto il progetto... Ma... 
Ciao 
:-) Hd (-:

Ho (con un botta di c##o incredibile) trovato cosa genereva l'errore...
un controllo di terze parti per l'utilizzo di pulsanti piatti.
L'ocx in questione si chiama Xbuttons.
Soluzione togliere tutti i pulsanti di questo tipo.
E poi, visto tutto quello che gli ho augurato dubito fortemente che tale
ocx osi 
solo ripresenatarsi nel mio pc...
Ciao
:-) Hd (-:

...

Wow, tutto e' bene... . . .  :-)
