Oppure

Loading
24/04/11 15:01
bagh3
Questa domanda sarà stata postata mille volte, ho controllato tutte le risposte che ho trovato con l'amico Google ma nulla fa al caso mio.

Questa è la mia situazione:

For x = 0 to 10
'funzioni varie che restituiscono Variabile = False
If Variabile = True Then 'se invece Variabile = True...
    AltroForm.ShowDialog() 'Il ciclo si ferma finchè AltroForm è aperto.
End If
'funzioni varie..
Next


Come vedete, finchè il form 'AltroForm' rimane aperto il ciclo si ferma e poi, alla chiusura, ricomincia.

Aggiungo che AltroForm contiene un Timer che fa un countdown al termine del quale chiude automaticamente il form facendo così riprendere il ciclo.

La mia domanda: è possibile ricreare questa pausa in qualche modo senza mostrare un'altro Form modale?

Vorrei NON usare cicli: troppe risorse..

Grazie in anticipo.



(Ho sempre avuto problemi tecnici con questo forum, potrei non riuscire a rispondere :( )
aaa
24/04/11 15:28
bagh3
Già, mi ero dimenticato di aggiungere che il ciclo si trova net Thread principale e che il countdown è di ben 1 ora.. Quindi vrdersi il programma congelato per un'ora mi sembra estremamente brutto per gli utenti finali..
aaa
24/04/11 16:49
Ultimo

Spiega meglio quello che intendi fare con questo programma :-|
If ok Then GOTO Avanza else GOTO Inizia

24/04/11 18:01
bagh3
Non mi pare di aver spiegato male:
voglio fermare temporaneamente (1 ora) un ciclo For Next con qualcosa che NON sia un ciclo Do Loop o un Thread.Sleep().
Nel codice al primo post ho mostrato come lo fermavo con un Form modale, ho spiegato però che tale è antiestetico.

Cerco quindi un metodo alternativo, che non Freezi l'applicazione (Thread.Sleep) e che usi troppe risorse (Do Loop).
aaa
24/04/11 21:16
Question
Non potresti iniziare il countdown, uscire dal ciclo e, finita la conta, riavviarlo partendo dalla stessa iterazione ma usando un if per controllare il valore della variabile e per eseguire le "funzioni varie" (se queste non ci fossero potresti farlo direttamente dall'iterazione successiva a quella della pausa)
Altrimenti potresti usare Sleep su un thread creato da te, così non avresti il "blocco" dell'applicazione.

Spero che tu stia cercando di fare una cosa del genere, perché anche io non sono sicuro di aver capito...
Ultima modifica effettuata da Question 24/04/11 21:19
aaa
24/04/11 23:09
bagh3
Grazie Question della risposta ma la mia situazione è molto più complicata del semplice esempio che ho postato, e uscire dal ciclo significherebbe creare una serie innumerevole di IF che mi riporti al punto di prima.
In più il For Next principale è in un BackgroudWorker_RunWorkerCompleted ma da questo si snoda in ben 19 Private e Public Function e, in 3 di queste, c'è la necessità della 'pausa'....
Ma ormai ho deciso, torno sui miei passi: mostro un Form modale che blocca tutto il processo e alla chiusura di questo fa ripartire tutto.
Poco estetico ma molto funzionale! :k:
aaa
25/04/11 9:59
Il Totem
Basta usare un timer, come Interval impostato su un'ora (3600000ms).

E' bizzarro come la gente abusi dei timer quando non servono e non ci pensi nemmeno quando sono necessari :rotfl:
aaa