Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Fermare un ciclo alla chiusura di un form
Forum - Visual Basic 6 - Fermare un ciclo alla chiusura di un form

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
dylan666 (Normal User)
Pro


Messaggi: 129
Iscritto: 08/09/2009

Segnala al moderatore
Postato alle 23:05
Martedì, 11/05/2010
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

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:38
Mercoledì, 12/05/2010
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à.
PM Quote
Avatar
dylan666 (Normal User)
Pro


Messaggi: 129
Iscritto: 08/09/2009

Segnala al moderatore
Postato alle 17:02
Mercoledì, 12/05/2010
Non esite nulla per svuotare al volo la memoria dall'exe e dalle sue istruzioni?

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 17:30
Mercoledì, 12/05/2010
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 il 12/05/2010 alle 19:24
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:01
Mercoledì, 12/05/2010
Testo quotato

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à.
PM Quote
Avatar
dylan666 (Normal User)
Pro


Messaggi: 129
Iscritto: 08/09/2009

Segnala al moderatore
Postato alle 23:49
Giovedì, 13/05/2010
Testo quotato

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?

Codice sorgente - presumibilmente Visual Basic 6

  1. For i = 0 To lst_ListaItem.ListCount - 1



Se sì, come?
Sarà l'uovo di colombo ma non ci riesco...

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 0:12
Venerdì, 14/05/2010
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à.
PM Quote
Avatar
dylan666 (Normal User)
Pro


Messaggi: 129
Iscritto: 08/09/2009

Segnala al moderatore
Postato alle 9:29
Venerdì, 14/05/2010
Ho provato a mettere in pratica quantomi avete scritto ma evidentemente sbaglio ancora...
Abbiate pazienza, ho scritto questo codice di esempio:

Codice sorgente - presumibilmente VB.NET

  1. Dim esciciclo As Boolean
  2.  
  3. Private Sub Form_Load()
  4. esciciclo = False
  5. End Sub
  6.  
  7. Private Sub Command1_Click()
  8. For i = 0 To 100000
  9. DoEvents
  10.  
  11. If eciciclo = True Then Exit Sub
  12.  
  13. Text1.Text = Text1.Text & i
  14.  
  15. Next i
  16. End Sub
  17.  
  18.  
  19. Private Sub Form_Unload(Cancel As Integer)
  20. esciciclo = True
  21. 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

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:17
Venerdì, 14/05/2010
Da una parte scrivi

esciciclo

e da un'altra

eciciclo


Fai attenzione ... per non fare capitare queste cose, inserisci all'inizio l'iatruzione

Option Explicit


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à.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo