Oppure

Loading
02/10/07 10:50
francesco rit
Ciao ragazzi,
sapreste dirmi come fare ad interrompere un ciclo manualmente da un Form in VB? Ho provato ad introdurre un controllo pulsante con una variabile di interruzione di ciclo associata ma se ci clicco sopra mentre sta girando l'applicazione va in crash il programma. Sapreste aiutarmi? Grazie a tutti
aaa
02/10/07 12:42
gantonio
Dovresti postare il codice che usi ... e che intendi per "andare in crash" ...
aaa
02/10/07 13:19
francesco rit
Allora il codice del ciclo interessato è il seguente...


Do Until trovato = True

If (Text1.Text = Mid$(Date, 1, 2) And Text2.Text = Mid$(Time, 1, 5)) Then

Do Until TmrReceive.Enabled = False

' ****** lancio il timer ********
Dim via As String
Call TmrReceive_Timer
Call Wait(0.9)


If (Text4.Text = Mid$(Date, 1, 2) And Text3.Text = Mid$(Time, 1, 5)) Then

TmrReceive.Enabled = False
End If

Loop

trovato = True

Else

trovato = False

End If
Loop



Si tratta di un timer che parte all'ora e al giorno fissato in text1 e text2 e si ferma all'ora e al giorno fissato in text3 e text4. Il codice funziona ma il problema è che se voglio interrompere mentre è in esecuzione dal Form non so come fare. Per crash intendo che il programma si impalla e non è più possibile tornare al codice sorgente senza riavviare VB.
Grazie dell'aiuto.
aaa
02/10/07 14:58
gantonio
Fai diverse chiamate a sub che non sono mostrate ... in questo caso e' difficile darti una indicazione precisa ...

In ogni caso, fossi in te, inserirei nel ciclo piu' interno una

DoEvents

per garantire il funzionamento della "message pump" di Windows ...
aaa
04/10/07 12:19
P4p3r0g4
non dovrebbe essere possibile interrompere cicli all'esterno di codice.
se proprio devi interromperlo piuttosto sostituisci il ciclo con un timer "intelligente" (che ti fa da ciclo)
per interromperlo basta disattivarlo.

nel senso che al posto del do loop ci metti un bel timer con intervallo 1.
Ultima modifica effettuata da P4p3r0g4 04/10/07 12:20
aaa
08/10/07 7:22
francesco rit
In effetti ho provato inserendo il doEvents all'interno del ciclo ma non è possibile lo stesso interrompere il ciclo in runtime.
Comunque la subroutine TmrReceive abilita già un timer che utilizzo per leggere con intervalli costanti alcuni dati, ero però interessato a poter intervenire ad esempio agendo su un pulsante per uscire dal ciclo prima della scadenza del timer...da quanto mi dite sembra che però questo non sia possibile, dovrò trovare altre strade. Grazie a entrambi per l'aiuto, alla prossima

;););)
aaa