Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [vb.net] interrompere un ciclo for..next

    Ciao il mio problema è il seguente:

    Utilizzo la classe System.Sintesys.Speak per avere la possibilita di far leggere al computer una determinata parola o frase.

    Viene eseguito un ciclo For..Next e ad ogni esecuzione viene letta un riga del datagridview.

    Esempio di codice:

    'Dichiaro la voce
    Dim Voce as New Voice
    Voice.Volume=100
    Voice.Rate=10

    'Imposto il datagridview
    Datagridview1.Datasource=MiaTabella

    'Eseguo il ciclo
    For i as integer = 0 to Datagridview1.Rows.Count-1

    voce.Speak("Record numero " & i & " , " & Datagridview1.Rows(i).Item(0).Tostring)

    next i

    Vorrei poter interrompere la voce quando desidero attraverso il metodo

    Voce.Pause

    che funzionerebbe se non per il fatto che finchè il ciclo non è terminato l'esecuzione di tale comando viene messo in attesa e viene eseguito solo alla fine.

    Non è che il button2 responsabile della pausa non sia abilitato o non funzioni e che se cliccato durante il ciclo è come se non funzionasse e addirittura se cliccato piu volte blocca l'intera applicazione

    Spero di essere stato chiaro e che qualcuno di voi possa aiutarmi

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    se il ciclo e l'esecuzione del pulsante che dovrebbe fermare il ciclo sono sullo stesso thread (come il main thread) la cosa non è possibile..

    Per fare ciò che chiedi tale ciclo deve stare su un thread separato..

  3. #3
    Come faccio a separare il ciclo dal main thread ?

    Riesci a farmi degli esempi anche di codice se necessari.

    Ciao

  4. #4
    Se metti
    Application.Doevents
    nel ciclo...

  5. #5
    Per completezza:
    Dopo ricerce su google ho trovato il seguente codice per generare un nuovo Thread

    Dim MioThread As System.Threading.Thread
    MioThread = New System.Threading.Thread(AddressOf MiaRoutine)

    -Per avviare MioThread:
    MioThread .Start()

    La mia domanda è:
    Per arrestare ( o forse meglio eliminare ) MioThread quale metodo devo usare?

    Il metodo suspend dice che è obsoleto.

  6. #6
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    un thread normalmente ha un corpo che può essere un ciclo (o più) o solo operazioni.. nel caso di sole operazioni credo basti un abort, nel caso di cicli è bene utilizzare variabili di stato per terminare suddetti cicli e quindi terminare il thread

  7. #7
    Spiega meglio: vuoi sospendere o uccidere il thread?
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    hia ragione, non sono stato chiaro.
    Vorrei uccidere il thread.

  9. #9
    Usa il metodo Abort, anche se di solito sarebbe meglio evitare di usarlo e dire piuttosto in modo più gentile al thread di terminare, in modo che termini in modo pulito.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.