Oppure

Loading
11/05/10 21:05
dylan666
Salve a tutti, ho un programmino che lancia una serie di cicli d istruzioni ripetute (usando dei loop) avviate da un bottone.

Se chiudo la finestra col tastino [X] i cicli continuano e vedo che rimane il processo appeso nel task manager.

Che comando devo mettere nell'evento unload (ammesso che sia la strada giusta) per fermare i cicli e tutti i comandi in corso?

Graze dell'aiuto
aaa
12/05/10 8:38
nessuno
Non c'e' un semplice "comando" che faccia quello che vuoi.

Devi trovare il modo di interrompere i cicli.

Puoi inserire all'interno dei cicli, un controllo con una if e una variabile che ti indichi che il ciclo deve essere terminato. Imposti questa variabile a False quando il ciclo deve girare, e a True prima di uscire con la Unload.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
12/05/10 15:02
dylan666
Non esite nulla per svuotare al volo la memoria dall'exe e dalle sue istruzioni?
aaa
12/05/10 15:30
GrG
nessuno ti ha già suggerito un modo per terminare i cicli senza troncarli in maniera "brutale"....


esempio:
dim ciclo as Boolean

Private Sub Form_Load()
ciclo = false
End Sub

Private Sub Comman1_Click()
Do
... 'al loop aggiungiamo la condizione di controllo
Loop untile ciclo = false 'continua il ciclo finchè ciclo è false, altrimenti stoppa il ciclo
End Sub

Private Sub Form_Unload()
ciclo = true
End Sub
Ultima modifica effettuata da GrG 12/05/10 17:24
aaa
12/05/10 17:01
nessuno
Postato originariamente da dylan666:

Non esite nulla per svuotare al volo la memoria dall'exe e dalle sue istruzioni?


Quello che hai scritto non ha senso ... Semmai un processo si puo' "terminare" brutalmente, ma in questo caso non parliamo di "programmazione" ma di "arte dell'arrangiarsi" ...

L'esecuzione del ciclo va terminata come ti ho detto.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
13/05/10 21:49
dylan666
Postato originariamente da GrG:

nessuno ti ha già suggerito un modo per terminare i cicli senza troncarli in maniera "brutale"....


esempio:
dim ciclo as Boolean

Private Sub Form_Load()
ciclo = false
End Sub

Private Sub Comman1_Click()
Do
... 'al loop aggiungiamo la condizione di controllo
Loop untile ciclo = false 'continua il ciclo finchè ciclo è false, altrimenti stoppa il ciclo
End Sub

Private Sub Form_Unload()
ciclo = true
End Sub

È possibile combinare il controllo della variabile booleana con un ciclo che comincia come questo?

For i = 0 To lst_ListaItem.ListCount - 1


Se sì, come?
Sarà l'uovo di colombo ma non ci riesco...
aaa
13/05/10 22:12
nessuno
All'interno del ciclo devi inserire una

DoEvents

e una

If ciclo Then Exit Sub
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
14/05/10 7:29
dylan666
Ho provato a mettere in pratica quantomi avete scritto ma evidentemente sbaglio ancora...
Abbiate pazienza, ho scritto questo codice di esempio:

Dim esciciclo As Boolean

Private Sub Form_Load()
esciciclo = False
End Sub

Private Sub Command1_Click()
For i = 0 To 100000
DoEvents

If eciciclo = True Then Exit Sub

Text1.Text = Text1.Text & i

Next i
End Sub


Private Sub Form_Unload(Cancel As Integer)
esciciclo = True
End Sub


Ho provato anche un Exit For invece di Exit Sub ma l'exe rimane in esecuzione (lo vedo nel task manager) anche se il form sparisce

Grazie della pazienza
aaa