Seite 1 von 1
Thread / :setStartTime()
Verfasst: Mi, 02. Jan 2019 19:12
von AUGE_OHR
hi,
ich habe seit einiger Zeit Probleme mit :setStartTime() ... er scheint nicht (mehr) auf die Zeit zu reagieren sondern löst sofort aus ?
Code: Alles auswählen
LOCAL nWait := 10
STATIC oThread4 := NIL
IF oThread4 = NIL
oThread4 := Thread() :new()
ENDIF
oThread4:setStartTime( SECONDS() + nWait )
oThread4:start( "NEWF2", @lExit )
verwendet sonst jemand Thread / :setStartTime()
Re: Thread / :setStartTime()
Verfasst: Do, 03. Jan 2019 1:02
von AUGE_OHR
hi,
hab ein (einfaches) Demo gemacht und da funktioniert es ... aber wenn man noch einen Thread / ActiveX verwendet tritt das Problem auf
---
was will ich erreichen :
es soll ein Thread gestartet werden und eine Aktion abbrechen wenn die Zeit abgelaufen ist.
Code: Alles auswählen
oThread4:setStartTime( SECONDS() + nWait )
oThread4:start( "NEWF2", @lExit )
die ausführung des Thread soll "storniert" werden wenn die Aktion innerhalb der Zeit erledigt wurde
Code: Alles auswählen
oThread4:setStartTime( NIL )
oThread4:setInterval( NIL )
oThread4 := NIL
wie das erweiterte Demo nun zeigt startet oThread4 obwohl die Zeit nicht abgelaufen ist.
Re: Thread / :setStartTime()
Verfasst: Do, 03. Jan 2019 3:34
von AUGE_OHR
ok, hab eine Lösung gefunden. so funktioniert es mit der abgelaufenen Zeit
Code: Alles auswählen
SLEEP(20)
// wenn active
IF oThread4:active
// auf Beendigung warten
oThread4:synchronize( 0 )
ENDIF
oThread4:setStartTime( NIL )
oThread4:setInterval( NIL )
oThread4 := NIL
offen bleibt die Frage warum lExit nicht funktioniert. ich übergebe es per Referenz
Code: Alles auswählen
PROCEDURE MAIN
LOCAL lExit := .F.
oThread:start( "Thread4", @lExit )
DO WHILE .NOT. lExit
PROCEDURE Thread4( lExit )
oThread4:start( "NEWF2", @lExit )
PROCEDURE NEWF2( lExit )
lExit := .T.