16/06/11 16:16
fusebyte
:-))) quasi quasi hai ragione:-)
Posto il Form_Unload
Ecco,questo è il mio "misero" codice :-) ...a me sembra sia tutto ok,,ma ..sembra è diverso da certo:-)
Ciao
Posto il Form_Unload
Private Sub Form_Unload(Cancel As Integer) SaveSetting APP.Title, "Index", Indx, Text26.Text SaveSetting APP.Title, "Counter", "Cntrl", Text43.Text 'memorizzo posizione form If Me.WindowState <> vbMinimized Then SaveSetting APP.Title, "Setting", "MainLeft", Me.left SaveSetting APP.Title, "Setting", "MainTop", Me.top SaveSetting APP.Title, "Setting", "MainWidth", Me.Width SaveSetting APP.Title, "Setting", "MainHeight", Me.Height End If Call MyDll.Disconnect Cancel = 0 Unload AddButton Unload Form3 Unload FormTotal Unload Form_Log Unload Form2 Unload Form5 Unload frmLogin Unload frmCount Unload MyForm Unload MyForm2 Unload Me 'Unload this form. Important: always End With "unload me". TrayI.cbSize = Len(TrayI) TrayI.hWnd = pichook.hWnd TrayI.uID = 1& 'Delete the icon Shell_NotifyIcon NIM_DELETE, TrayI End End Sub
Ecco,questo è il mio "misero" codice :-) ...a me sembra sia tutto ok,,ma ..sembra è diverso da certo:-)
Ciao
aaa
17/06/11 7:09
gibra
Il tuo codice non è misero, anzi il contrario!
Troppi UnLoad in sequenza (di cui non si conosce l'esito) messi in serie.
Dovresti gestire l'UnLoad man mano che chiudi OGNI singolo form, in cui devi prevedere eventuale codice di controllo (ma non sapendo cosa fa la tua applicazione non si può dire di più.
Gestendo la chiusura di ogni form a tempo debito, ovvero quando non serve più, semplifica la gestione della stessa.
Tra l'altro mettere l'istruzione:
all'interno dell'evento Form_Unload() è completamente assurdo, oltre che sbagliato, perchè l'istruzione Unload Me scatena proprio l'evento Form_Unload, quindi corri il rischio di entrare in un loop infinito, e forse a causa di questo fatto hai probabilmente pensato di usare l'End, ma...
... usare End è assolutamente sbagliato.
NON si deve MAI usare End, se lo si usa si deve conoscere esattamente quali sono le ripercussioni di tale uso, quindi va usato SOLO a ragion veduta.
Questo non è certo il caso.
Ti consiglio di consultare la guida in cui sono spiegati dettagliatamente i problemi che derivano dall'uso errato di End (come nel tuo caso).
HTH
Troppi UnLoad in sequenza (di cui non si conosce l'esito) messi in serie.
Dovresti gestire l'UnLoad man mano che chiudi OGNI singolo form, in cui devi prevedere eventuale codice di controllo (ma non sapendo cosa fa la tua applicazione non si può dire di più.
Gestendo la chiusura di ogni form a tempo debito, ovvero quando non serve più, semplifica la gestione della stessa.
Tra l'altro mettere l'istruzione:
Unload Me
all'interno dell'evento Form_Unload() è completamente assurdo, oltre che sbagliato, perchè l'istruzione Unload Me scatena proprio l'evento Form_Unload, quindi corri il rischio di entrare in un loop infinito, e forse a causa di questo fatto hai probabilmente pensato di usare l'End, ma...
... usare End è assolutamente sbagliato.
NON si deve MAI usare End, se lo si usa si deve conoscere esattamente quali sono le ripercussioni di tale uso, quindi va usato SOLO a ragion veduta.
Questo non è certo il caso.
Ti consiglio di consultare la guida in cui sono spiegati dettagliatamente i problemi che derivano dall'uso errato di End (come nel tuo caso).
HTH
aaa
17/06/11 9:37
fusebyte
Rivedro' tutti i form e la gestione della loro chiusura.
Per l' END mi è stato consigliato per gestire meglio la chiusura della TRAY
ma evidentemente non è cosi'
E' una TRAY composta da N icone e nella barra risulta come un lampeggio.
Ti ringrazio.
Per l' END mi è stato consigliato per gestire meglio la chiusura della TRAY
ma evidentemente non è cosi'
E' una TRAY composta da N icone e nella barra risulta come un lampeggio.
Ti ringrazio.
aaa
18/06/11 7:32
gibra
Giusto per ribadire,
l'uso di End è sbagliato (a prescindere) perchè 'tronca' l'esecuzione del programma, ed i risultati possono essere disastrosi.
Nessuna risorsa viene rilasciata, e spesse volte genera un'errore in uscita dell'applicazione, ma solo nel compilato (EXE) perchè nell'IDE VB6 intercetta l'End e provvede a eseguire i passi necessari.
La prima volta che usai End, tantissimi anni fa, mi accadeva proprio questo.
Stavo utilizzando un OCX (credo fosse il primo del suo genere) per gestire le immagini nei menu.
Contattai l'autore (oltre oceano) che, senza nemmeno conoscere il mio codice mi rispose (in inglese):
"Togli l'End."
Rimasi di stucco! Come faceva a sapere che usavo End...
Ovviamente tutto funzionava perfettamente.
Allora sono andato a documentarmi sulla guida (quello che ti ho consigliato di fare).
Chi ha consigliato l'uso di End, probablimente aveva da poco fatto bisboccia
l'uso di End è sbagliato (a prescindere) perchè 'tronca' l'esecuzione del programma, ed i risultati possono essere disastrosi.
Nessuna risorsa viene rilasciata, e spesse volte genera un'errore in uscita dell'applicazione, ma solo nel compilato (EXE) perchè nell'IDE VB6 intercetta l'End e provvede a eseguire i passi necessari.
La prima volta che usai End, tantissimi anni fa, mi accadeva proprio questo.
Stavo utilizzando un OCX (credo fosse il primo del suo genere) per gestire le immagini nei menu.
Contattai l'autore (oltre oceano) che, senza nemmeno conoscere il mio codice mi rispose (in inglese):
"Togli l'End."
Rimasi di stucco! Come faceva a sapere che usavo End...
Ovviamente tutto funzionava perfettamente.
Allora sono andato a documentarmi sulla guida (quello che ti ho consigliato di fare).
Chi ha consigliato l'uso di End, probablimente aveva da poco fatto bisboccia
aaa
18/06/11 9:07
fusebyte
Se esiste pero' a qualcosa dovra pur servire.
Per esempio, se la mia applicazione sta facendo dei calcoli e va in loop per un qualche errore di qualsiasi natura,per uscirne ,usare END puo' rivelarsi utile?
Parliamo di casi estremi dove l'unica soluzione è chiudere l' applicazione da task.
Ciao
Per esempio, se la mia applicazione sta facendo dei calcoli e va in loop per un qualche errore di qualsiasi natura,per uscirne ,usare END puo' rivelarsi utile?
Parliamo di casi estremi dove l'unica soluzione è chiudere l' applicazione da task.
Ciao
aaa
18/06/11 15:42
gibra
Postato originariamente da fusebyte:
Se esiste pero' a qualcosa dovra pur servire.
Per esempio, se la mia applicazione sta facendo dei calcoli e va in loop per un qualche errore di qualsiasi natura,per uscirne ,usare END puo' rivelarsi utile?
Parliamo di casi estremi dove l'unica soluzione è chiudere l' applicazione da task.
Ciao
Se esiste pero' a qualcosa dovra pur servire.
Per esempio, se la mia applicazione sta facendo dei calcoli e va in loop per un qualche errore di qualsiasi natura,per uscirne ,usare END puo' rivelarsi utile?
Parliamo di casi estremi dove l'unica soluzione è chiudere l' applicazione da task.
Ciao
Guarda che sei completamente fuori pista.
ma se prima non ti leggi la guida, mi pare inutile continuare a discutere ipotizzando situazioni strane.
Rifletti: se un'applicazione va in loop come fai bloccarla con End?
Se lo vuoi fare, significa che l'hai previsto, e se è così devi gestire l'errore.
[b]Mai sentito parlare di gestore degli errori?[7b]
Immagino di sì.
Se l'applicazione va in loop perchè non hai previsto un gestore degli errori, allora End NON è la soluzione, ma sarà il cliente a chiudere il processo, avvisarti del problema e tu dovrai correggere l'errore.
Quindi alla fine, la soluzione è gestire gli errori.
aaa