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 :angry4:

---

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.
THREAD_Stop1.ZIP
Source, "pure" Xbase++
(518 Bytes) 207-mal heruntergeladen

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.