Newsgroup: it.comp.lang.visual-basic
Titolo: Non Riesco a scaricarlo...

Ho qualche problema con un progetto al quale sto lavorando.
Volendo evitare che vengano eseguite piu' istanze dello stesso programma 
e volendo evitare che esso rimanga caricato in memoria ho inserito il 
codice sotto riportato, nonostante cio' e' possibile eseguire piu' volte 
il file compilato, la prima volta compare correttamente il form mentre 
per le successive  su desktop non si vede nulla ma, aprendo il Task 
Manager di XP, si vedono tutte le istanze rimaste in memoria, l'unico 
modo per liberarle e' premere il "Termina Operazione", dove ho sbagliato?
Ciao a tutti, Roby.
-	-	-	-	-
Private Sub Form_Load()
   If App.PrevInstance Then
     Form1.Visible = False
     Unload Form1
   End If
...
   Timer1.Enabled = False
   Timer2.Enabled = False
   Timer3.Enabled = False
...
End Sub
la chiusura puo' avvenire attraverso tre diversi eventi
Con un Bottone:
Private Sub PowerButton7_Click()
   Form1.Visible = False
   Unload Form1
End Sub
Con un primo Timer:
Private Sub Timer2_Timer()
   Static Counter As Integer
   Counter = Counter + 1
   XPLabel3013 = Str(10 - Counter)
     If Counter = 10 Then
     Form1.Visible = False
     Unload Form1
   End If
End Sub
Con un secondo Timer:
Private Sub Timer3_Timer()
   Form1.Visible = False
   Unload Form1
End Sub

 End Sub
poi in _queryUnload metti lo scaricamento di tutti i form e alla fine
mettici un bel END(*) cosi' sei sicuro che l'app si chiuda !!
* questo e' uno di quei casi in cui l'end si puo' usare tranquillamente !
-- 
-Gigio@work-
G2kSnipUrl : 
http://www.g2kweb.it/?3015
( il servizio accorcia link + Gigioso che conosciate ! )
---> No alla CONFISCA delle moto : 
http://www.maxkava.com/moto
 <---

 mettici un bel END(*) cosi' sei sicuro che l'app si chiuda !!
Ha funzionato, grazie!
Roby.

 e volendo evitare che esso rimanga caricato in memoria ho inserito il 
[cut]
hai sbagliato il posto dove fare il controllo!
nell'evento Form_Load non si puo' fare l'Unload.
per evitare di caricare piu' istanze devi:
1) Aggiungere un modulo BAS
2) mettere questo codice:
	Public Sub Main()
	    If App.PrevInstance = False Then
	        Form1.Show
	    End If
	End Sub
3) nelle Proprieta del progetto mettere come
    oggetto d'avvio Sub Main
fatto!
bye
r
PS: non e' che usare End nelle Form_Load sia sbagliato, ma in questo 
modo eviti proprio di caricarlo il Form ;-)

 * questo e' uno di quei casi in cui l'end si puo' usare tranquillamente !
ARGHHHHHHHHHHHHHH...
č una barbarie l'end...
ciao GiGGio
-> GbC|
www.gbcweb.com

 ciao GiGGio
We' cio' messo anche l'asteriscolo !!!
Auff... non vi va mai bene nulla :p
Mail.send
Unload Me
END
*crash*


 *crash*
Concordo con GbC. Le cose van fatte pulite; se chiudi tutto l'END non serve
MAI. Non va usato.
(e se lo usi per disperazione, vergognatene e non dirlo mai a nessuno ^_^,
... chissą se GbC l'ha mai usato... tanto non lo ammetterebbe mai ^_^  )
Ciao
Ettore Maronese, il Mes
http://www.it-lang-vb.net
   << Il Migliore

 mai ^_^  )
io lo uso dopo il ciclo di scaricamento form (quando posso) ... e tu ? MAI
MAI MAI MAI ?
(PS: benrisentito)


 -- 
Grazie
CIAO
Ettore Maronese, il Mes
http://www.it-lang-vb.net
   << Il Migliore
Non seguite mai il rasoio di Occam: "Pluralitas non est ponenda sine
necessitate" perchè significa rifugiarsi nella pigrizia.

 MAI. Non va usato.
Il mio vbp non ha nulla di speciale e chiudeva con il classico "Unload".
Cosa vuoi intendere con cose "fatte sporche"?
Roby.

 Cosa vuoi intendere con cose "fatte sporche"?
Intendo, per esempio dimenticarsi un Form aperto ma non visibile. Quindi fai
Unload del form principale ma l'applicazione non si chiude realmente,
rimanendo aperta ma non visibile.
Peggio, allocare una risorsa (es. via API) e dimenticarsi di deallocarla
prima di chiudere il programma. L'END in questo caso sicuramente non la
deallocherebbe.
CIAO
Ettore Maronese, il Mes
http://www.it-lang-vb.net
   << Il Migliore
Evitate di applicare il rasoio di Occam: "Pluralitas non est ponenda sine


 Grazie
END

 "Unload". Cosa vuoi intendere con cose "fatte sporche"?
Il metodo + pulito e' come suggerito in precedenza : un modulo con sub main
, avvii il progetto da quello cosicche' non carichi nessuna form e non
rischi di instanziare altra roba, poi se e' tutto ok, visualizzi la form e
prosegui, altrimenti chiudi con un "unload".
Cosi' e' pulito , ordinato e funziona lo stesso.
Usare il ciclo sui form e l'end alla fine diciamo che sono metodi un po
sporchini nel senso che tu prima scarichi le form e tutti i suoi riferimenti
e poi l'end da una bella zappata al processo (e' come fare termina processo
dal Task Manager, solo che lo fai a fine ciclo quando oramai e' tutto
scaricato.)
Poi come si dice : "ognuno e' innocente fino a prova contraria", sull' end
io non ho ancora prove per incriminarlo !
Certo che se si usa nel codice in modo cinofallico li' non e' colpa dell'end
ma del programmatore!


 
Grazie, ora ho capito! Grazie ancora, Roby.

 ... chissą se GbC l'ha mai usato... tanto non lo ammetterebbe mai ^_^  )
certo che l'ho usato
ma taccio nella vergogna
e non lo ammetterņ mai pubblicamente :P
ciao ettore
-> GbC|
www.gbcweb.com

 la guerra !"
concordo! l'End non fa male, a volte e' utile come segnale che tutto e' stato
de-istanziato, perche', in caso contrario, se non lo metti, non vedi nulla ma
il programma rimane appeso in memoria, invece se lo metti vedi un bel CRASH


io fossi in te non mi vergognerei!!! vedi mio post sopra

 io fossi in te non mi vergognerei!!! vedi mio post sopra
ho letto... purtroppo non sempre si può essere certi che dopo un END tutto
sia a posto...
ad esempio se usi i socket (o anche ocx di terze parti fatte un po' alla
'viva il parroco') un bell'end non fa altro darti la 'sensazione' che il tuo
programma sia terminato; in realtà non è vero... sembra... lo rilanci, e poi
lo richiudi... altra istanza... alla fine la stabilità del sistema risulta
irrimediabilmente compromessa, e non sai neanche perché... o meglio, lo sai
se apri il task manager e vedi la merdaccia che sta ancora lì...
è una barbarie, e basta...
ciò non toglie che qualcuno disinvoltamente lo utilizzi; è sempre meglio
farne a meno e capire dove si sta toppando, perché qualcosa si sta
certamente cannando altrimenti non servirebbe...
-> GbC|
www.gbcweb.com

 è una barbarie, e basta...
E senza end cosa cambia ? Non hai sempre tutta la merdaccia nella task bar ?
Solo che magari con l'end ti genera un crash che ti avverte che hai toppato 
qualcosa, senza end la robaccia e' li, il problema come dici tu giustamente 
sta nel ricorreggere il prg , l'end ti puo' solo avvertire ome dice 
Salclem2, possiamo dire che l'End e' nostro amico :p
-- 
[Gigio2k]
Accorcia i link gratis e in modo semplice :
G2kSnipUrl : 
http://www.g2kweb.it/?3015


 Salclem2, possiamo dire che l'End e' nostro amico :p
dimmi con chi vai e ti dirņ chi sei...
similis cum similibus coniugantur...
posso andare avanti ma ho sonno :P
gh.....
-> GbC|
www.gbcweb.com
PS: ora fondo l' "Associazione degli Amici dell'End" e vi mando a Mai Dire
Lunedģ ad assistere a 'Tua Sorella'; chissą cosa ne pensa il tuo sosia
Forrest...


non faresti piu' figura se rispondessi con il cervello (se ce l'hai)
alla domanda che ti ha fatto Gigio2k?
e cioe'


>>>>>>>>>>>>
</Troll-O-Meter>

No comment!!!
la parola al tuo amico, infatti io non c'entro niente.............

 la parola al tuo amico, infatti io non c'entro niente.............
BBoni... state bboni !!! ^_^
-- 
-Gigio@work-
G2kSnipUrl : 
http://www.g2kweb.it/?3015
( il servizio accorcia link + Gigioso che conosciate ! )


 che questo comporta?
/me si appunta tutto... bella frase... *scrib* *scrib*...
-- 
-Gigio@work-
G2kSnipUrl : 
http://www.g2kweb.it/?3015
( il servizio accorcia link + Gigioso che conosciate ! )


"Gigio2k [work]" scrive...
[snip]
PROOOOOOOOOOOOOOOOTTTTTT
-> GbC|
www.gbcweb.com

Bella! Gigio2k,
menomale che c'č chi, come te, ha la pazienza di spiegare le cose
come alla scuola elemntare!!!
GbC| te la sei cercata!!!

 nel caso 2 l'end ti avverte suBBito di un problema, VEDI ? Ti vuole
bene...
Quello che dici al punto (2) non è vero.
Ci sono mille casi in cui l'end non ti avverte di nulla.
Pensi di avere chiuso ma non hai scaricato nulla.
Carica i WinSocket (ocx) ed avvia una transazione.
Lanciala e mentre aspetti una risposta esci con end.
Nessun messaggio, nessun errore.
Il programma è ancora lì nel taskmanager.
Ma davvero pensi che parli perché ne ho voglia?
-> GbC|
www.gbcweb.com


+
-> GbC|
www.gbcweb.com


Suvvia, se volete usare l'End, usatelo.. è lì, c'è, usiamolo.
La cosa che ("ci") preme in questo NG, oltre che aiutarsi, è "provare" a
diffondere un po di "buona programmazione". Programmare da una vita (come fa
ad esempio GbC) da una certa maturità... su come è meglio procedere...
Interrompere un processo non è mai una bella cosa... può capitare di
tutto... rischi di farti un mazzo per scrivere del buon codice che riesci e
riesce a tenere tutto sotto controllo e poi quando il programma deve
chiudersi se ne perde il controllo... direi che è meglio averne il controllo
fino all'ultimo passo oltre il quale non è più di tua competenza ma del
Sistema Operativo.
Usando l'End perdi il controllo della fase di chiusura, di ciò che accade
nella fase di chiusura, quindi se vuoi essere sicuro che il tuo programma
faccia tutto come si deve, SEMPRE, è meglio non usare l'End.
Attenzione, *Non*Sottovalutate* la fase di chiusura di una applicazione, è
importante quanto quella di apertura e di Run, ne va della stabilità dei
tuoi programmi, degli altri, e del sistema operativo. (e delle tue tasche se
programmi per mangiare, visto che un programma stabile non ti fa
*buttare*via* tempo=soldi per inseguire anomalie apparentemente assurde )
amen :)
CIAO
Ettore Maronese, il Mes
http://www.it-lang-vb.net
   << Il Migliore



e cosi sia, nei secoli dei secoli

 Ma davvero pensi che parli perché ne ho voglia?
:****


 :****
dai , diciamo che GENERALMENTE e' meglio non usare l'end
Io stesso sinceramente lo uso solo negli avvi da modulo per uscire se il
login non e' stato accettato e in pochi programmi alla fine del ciclo di
scaricamento dei form (programmi semplici senza molti ocx o ocx strani , i
classici gestionalini-ini, il suo utilizzo in quei casi e' inutile, ma
meglio abbondare no ? :p
PS: si, non cambiero' mai, ma una mangiatina ? io (tempo permettendo) il 17
e 18 dicembre dovrei essere per le parti di modena-fidenza... gnam gnam...


 distruggere la variabile oggetto form e per concludere in bellezza un END!
End? Mai usato.
Cerco di sfruttare al meglio il Class_Terminate, piuttosto, anche
se non e` un distruttore vero e proprio, sfruttando gli automatismi
della programmazione ad oggetti.
-- 
ciao, hal

Giusto ieri grazie a un END messo, ho trovato che
mancava la rimozione di un subclassing che io ero
sicuro di chiamare in chiusura ma che invece, in determinate
circostanze non veniva richiamato.
Senza quel famoso end, non ci sarebbe stato il CRASH,
e probabilmente quell'errore sarebbe stato ignorato per anni.
Ai posteri...........
-- 
bye.
________________________
http://salclem2.altervista.org/
http://netuser.altervista.org/
http://pmonitor.altervista.org/

 e 18 dicembre dovrei essere per le parti di modena-fidenza... gnam gnam...
yessssssssssssss
in quei giorni ci sta proprio bene
lacifacciasapere che chiamo orag ed aran
-> GbC|
www.gbcweb.com

 lacifacciasapere che chiamo orag ed aran
neve permettendo "l'altro" meeting e' gia' organizzato, spero solo che ce la 
si faccia a salire in polentonia !
-- 
[Gigio2k]
Accorcia i link gratis e in modo semplice :
G2kSnipUrl : 
http://www.g2kweb.it/?3015
