+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [VB NET 2010]Interruzione ciclo

  1. #1
    ljt
    ljt non è in linea Scolaretto
    Post
    137

    [VB NET 2010]Interruzione ciclo

    Salve a tutti,

    sono di nuovo qui per avere un consiglio su come poter bloccare un ciclo tramite un button.
    Ho il seguente codice:
    codice:
              While ciclo = True
                    Istruzione1
                    Istruzione2
                    Istruzione n-1
                End While
    Dato che questo ciclo deve essere infinito, volevo fare in modo che l'utente possa bloccarlo a suo piacimento.
    Ho messo un Buttton con il seguente codice:
    codice:
    ciclo = false
    Ma dato che le istruzioni all'interno del ciclo sono continue la pressione del tasto STOP non viene "presa in considerazione".
    Ho provato a inserire una breve pausa all'interno del ciclo:
    codice:
             While ciclo = True
                    Istruzione1
                    Istruzione2
                    Istruzione n-1
                    Threading.Thread.Sleep(1000)
                End While
    Senza successo, anche se questa soluzione dovrei scartarla a priori in quanto mi rallenterebbe il ciclo while ed è una cosa che non posso fare.
    Ho messo il ciclo all'interno di un timer, ma idem come sopra.
    Dunque a questo punto scatta il domandone:

    Come posso interrompere il ciclo infinito tramite un Button?

    Esiste un comando che possa forzare l'interruzione?

    Grazie

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,261
    Blogs
    5
    Usa le due linee seguenti

    Threading.Thread.Sleep(10)
    Application.DoEvents
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    ljt
    ljt non è in linea Scolaretto
    Post
    137
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Usa le due linee seguenti

    Threading.Thread.Sleep(10)
    Application.DoEvents
    Cavolo, più veloce del cambio gomme della ferrari e inoltre funziona alla grande.

    Riporto il codice:

    codice:
    While ciclo = True
                    Istruzione1
                    Istruzione2
                    Istruzione n-1
                    Threading.Thread.Sleep(10)
                    Application.DoEvents
    End While
    Comunque, giusto per informazione, funziona anche senza:

    codice:
    Threading.Thread.Sleep(10)
    Considerando che il tempo è denaro perdere 10 millesimi di secondo sarebbe una catastrofe..

    E pensare a quante volte avrò usato

    codice:
    application.exit

    Grazie infinite e al prossimo quesito.

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,261
    Blogs
    5
    Attenzione a quei 10 millisecondi. Se non li usi, a seconda di cosa c'è nel ciclo, la CPU potrebbe schizzare al 100% ... se succede, inseriscila.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    ljt
    ljt non è in linea Scolaretto
    Post
    137
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Attenzione a quei 10 millisecondi. Se non li usi, a seconda di cosa c'è nel ciclo, la CPU potrebbe schizzare al 100% ... se succede, inseriscila.
    Si giusta puntualizzazione, difatti, battute a parte, l'ho lasciato.
    Ancora possiamo permetterci di perdere 10 millisecondi.

    Di nuovo grazie infinite, per me il thread si può considerare più che risolto.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi