Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Mettere in pausa un ciclo
Forum - C# / VB.NET - [VB.NET] Mettere in pausa un ciclo

Avatar
bagh3 (Normal User)
Newbie


Messaggi: 11
Iscritto: 10/03/2011

Segnala al moderatore
Postato alle 17:01
Domenica, 24/04/2011
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:

Codice sorgente - presumibilmente VB.NET

  1. For x = 0 to 10
  2. 'funzioni varie che restituiscono Variabile = False
  3. If Variabile = True Then 'se invece Variabile = True...
  4.     AltroForm.ShowDialog() 'Il ciclo si ferma finchè AltroForm è aperto.
  5. End If
  6. 'funzioni varie..
  7. 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 :( )


Memento
Audere
Semper
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
2
Down
V
Segnala al moderatore
Postato alle 11:59
Lunedì, 25/04/2011
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:

Eh? - Question - 25/04/11 15:07
Un timer non risolve il mio problema. Ah, l'intervallo massimo di un Timer è di circa 64 secondi ;) - bagh3 - 26/04/11 17:54
Un Timer non risolve il mio problema. - bagh3 - 26/04/11 17:55
vabbeh il limite lo puoi aggirare con un If e una variabile Static - Question - 26/04/11 21:04


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
-1
Down
V
Segnala al moderatore
Postato alle 17:22
Domenica, 24/04/2011


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM
Avatar
bagh3 (Normal User)
Newbie


Messaggi: 11
Iscritto: 10/03/2011

Up
-1
Down
V
Segnala al moderatore
Postato alle 17:28
Domenica, 24/04/2011
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..


Memento
Audere
Semper
PM
Avatar
Ultimo (Member)
Expert


Messaggi: 513
Iscritto: 22/05/2010

Up
-1
Down
V
Segnala al moderatore
Postato alle 18:49
Domenica, 24/04/2011

Spiega meglio quello che intendi fare con questo programma :-|


Ultimo (Hai voluto la bicicletta ? ....)

Studiare LINQ, WPF, ASP.NET MVC, Entity Framwork, C#, Blend, XAML, Javascript, HTML5, CSS .....(tanta roba)

https://www.dropbox.com/s/c2aots5x4urgbhf/setup_game_sudoku ...
PM
Avatar
bagh3 (Normal User)
Newbie


Messaggi: 11
Iscritto: 10/03/2011

Up
-1
Down
V
Segnala al moderatore
Postato alle 20:01
Domenica, 24/04/2011
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).


Memento
Audere
Semper
PM
Avatar
Question (Normal User)
Rookie


Messaggi: 58
Iscritto: 14/12/2010

Up
-1
Down
V
Segnala al moderatore
Postato alle 23:16
Domenica, 24/04/2011
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 il 24/04/2011 alle 23:19


Ma ovviamente x64
PM
Avatar
bagh3 (Normal User)
Newbie


Messaggi: 11
Iscritto: 10/03/2011

Up
-1
Down
V
Segnala al moderatore
Postato alle 1:09
Lunedì, 25/04/2011
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:


Memento
Audere
Semper
PM