il FIFO in gb.data funziona....finché non si cerca di svuotarlo da uh task separato....allora succedono cose strane....forse c'è sotto un BUG.
All'inizio la coda q è riempita con 4 elementi e, all'attivare il task, viene giustamente scaricata....ma successivamente, battendo dei caratteri nella TextArea questi vengono aggiunti alla coda come se questa non fosse mai stata scaricata:
Entra nel task
Task Dequeue Primo
Task Size 3
Task Dequeue 123
Task Size 2
Task Dequeue True
Task Size 1
Task Dequeue a
Task Size 0 <------------- nota che ora il FIFO è scarico... apparentemente
FMain.Form_Open.28: Manico 109662 ....prima parte tutto regolare
....................................
...seconda parte.....batto dei caratteri nella TextArea:
FMain.TextIN_Change.49: Manico 109791
Size aggiunto 5
FMain.TextIN_Change.49: Manico 109791
Size aggiunto 6
FMain.TextIN_Change.49: Manico 109791
Size aggiunto 7
FMain.TextIN_Change.49: Manico 109791
Size aggiunto 8
FMain.TextIN_Change.49: Manico 109791
Size aggiunto 9
La numerazione riprende come se la FIFO non fosse stata scaricata nella parte precedente; il processo di svuotamento è sempre attivo e con lo stesso nº di handle ma no fa niente.
Se poi clicco sul bottone Scarica mi butta fuori tutto ....anche i dati introdotti all'inizio
Ora, se riclicco su Scarica non stampa niente....questa volta ha davvero scricato il FIFO.
Sará una delle tante stranezze di Gambas ?
In allegato il programma di test: Test-FIFO-Task
Secondo me il tuo codice funziona.
La prima volta scrive quello che scarica (sei tu che scrivi Print davanti a q.Dequeue() ) e poi la seconda volta non ha più niente da scrivere e quindi non scrive nulla.
Ti consiglio di scrivere qualcosa di simile nella classe:
Public Sub Ferma()
Me.Stop
End
e poi questo in FMain.class:
Public Sub Form_Close()
tSendCW.Ferma
End
:ciao:
:'( Forse ho inviato un programma modificato per funzionare con un timer.
Ora allego il programma con problema con le tue modifiche aggiunte....
e questo è problematico:
Alla partenza fa:
Entra nel task
Task Dequeue Primo
Task Size 3
Task Dequeue 123
Task Size 2
Task Dequeue True
Task Size 1
Task Dequeue a
Task Size 0
FMain.Form_Open.28: Manico 426187
poi, se scrivo qualcosa nel form aggiunge i caratteri al FIFO correttamente, ma il Task non li toglie.
Size aggiunto 5 <---- aggiunge dalla posizione 5....è sbagliato perché il FIFO avrebbe dovuto essere già scarico
Running True
Size aggiunto 6
Running True
Size aggiunto 7
Running True
Size aggiunto 8
Running True
Size aggiunto 9
Running True
Size aggiunto 10
Running True
Size aggiunto 11
Running True
Size aggiunto 12
Running True
Size aggiunto 13
Running True
Se ora schiaccio Scarica i caratteri vengono estratti cominciando dai primi che varebbero dovuto essere già eliminati:
Primo
123
True
a
k
h
s
d
a
h
s
d
k
a
s
k
d
h
------------------------------
Buona notte
Pino