Thread startet nur 1x von selbst nach [ERLEDIGT]
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Thread startet nur 1x von selbst nach [ERLEDIGT]
Hi,
ich habe einen thread, den ich starte und nachdem er seine Pflicht erfüllt hat setze ich mit :setinterval(zeit) eine neue Startzeit. Das Ding ärgert mich nun, weil es nur 1x nach dem ersten Start von selbst wieder anläuft, danach nicht wieder. Wenn ich im Debugger nachsehe, ist aber zu sehen, dass das Interval gesetzt wurde. Irgendwelche Ideen, ohne den Quellcode gesehen zu haben?
ich habe einen thread, den ich starte und nachdem er seine Pflicht erfüllt hat setze ich mit :setinterval(zeit) eine neue Startzeit. Das Ding ärgert mich nun, weil es nur 1x nach dem ersten Start von selbst wieder anläuft, danach nicht wieder. Wenn ich im Debugger nachsehe, ist aber zu sehen, dass das Interval gesetzt wurde. Irgendwelche Ideen, ohne den Quellcode gesehen zu haben?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16536
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 113 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Thread startet nur 1x von selbst nach
Yup.
Reicht Dir als Antwort: Das geht so nicht!
Schau mal in der Hilfe - da ist das explizit erwähnt.
Viele Grüße,
Martin
Reicht Dir als Antwort: Das geht so nicht!
Schau mal in der Hilfe - da ist das explizit erwähnt.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16536
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 113 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Thread startet nur 1x von selbst nach
Alaska Hilfe zu :setStartTime() hat geschrieben:Wenn :setStartTime() und :setInterval() benutzt werden, sollte :setInterval() in :atStart() aufgerufen werden.
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Thread startet nur 1x von selbst nach
Ich benutze keine :setstarttime(). Ich rufe das Dingen auf und danach setze ich das Interval neu. Dann läuft es noch 1x von selbst und dann nicht mehr.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Thread startet nur 1x von selbst nach
Vielleicht sieht ja jemand meinen Fehler?
grob skizziert
kann das so überhaupt klappen?
grob skizziert
Code: Alles auswählen
LOCAL oThreadWacheMail := wache_mail():new()
oThreadWacheMail:start("wacheMail",oThreadWacheMail)
procedure wache_mail(oThread)
// hier steht der Code, der ausgeführt wird.
oThread:setInterval(oParameterExport:intmail*60*100) // neuen Wert setzen, falls die Parameter zwischendurch geändert wurden
return
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 07. Aug 2006 10:18
- Wohnort: Leipzig
- Danksagung erhalten: 11 Mal
Re: Thread startet nur 1x von selbst nach
Hallo Manfred,
probier mal das aus:
probier mal das aus:
Code: Alles auswählen
oThread:setInterval( NIL )
oThread:setInterval( nNewInterval )
Beste Grüße,
Sören
Sören
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Thread startet nur 1x von selbst nach
Habe ich als erstes probiert, bringt auch nichts.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Thread startet nur 1x von selbst nach
ich würde sagen : NEINManfred hat geschrieben:kann das so überhaupt klappen?Code: Alles auswählen
LOCAL oThreadWacheMail := wache_mail():new() oThreadWacheMail:start("wacheMail",oThreadWacheMail) procedure wache_mail(oThread) // hier steht der Code, der ausgeführt wird. oThread:setInterval(oParameterExport:intmail*60*100) // neuen Wert setzen, falls die Parameter zwischendurch geändert wurden return
IMHO muss ein o:setInterval() VOR der o:Start() gesetzt werden. siehe C:\ALASKA\XPPW32\Source\COMPAT\timer.prg
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Thread startet nur 1x von selbst nach
OK,
hatte ich auch schon. Klappt aber trotzdem nicht.
hatte ich auch schon. Klappt aber trotzdem nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Thread startet nur 1x von selbst nach
hast du den "alten" Thread versucht zu benutzten oder ihn "neu" angelegt ?Manfred hat geschrieben:hatte ich auch schon. Klappt aber trotzdem nicht.
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Thread startet nur 1x von selbst nach
Hm,
ich denke mal, dass ich den immer wieder benutzen möchte. Also er wird einmal mit Start angeworfen. Dann durchläuft er seine Arbeit und direkt danach wird setinterval() neu gesetzt, oder nochmal, je nachdem ob sich der Wert für die zeit geändert hat oder nicht. In der Hoffnung, dass er dann nach dem (neuen) Intervall wieder startet. das macht er aber nicht andauernd, sondern immer nur 1x beim Start direkt. Arbeitet seine Funktion ab, bekommt wieder setinterval() gesetzt und soll dann warten, um dann wieder loszulaufen.
ich denke mal, dass ich den immer wieder benutzen möchte. Also er wird einmal mit Start angeworfen. Dann durchläuft er seine Arbeit und direkt danach wird setinterval() neu gesetzt, oder nochmal, je nachdem ob sich der Wert für die zeit geändert hat oder nicht. In der Hoffnung, dass er dann nach dem (neuen) Intervall wieder startet. das macht er aber nicht andauernd, sondern immer nur 1x beim Start direkt. Arbeitet seine Funktion ab, bekommt wieder setinterval() gesetzt und soll dann warten, um dann wieder loszulaufen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Thread startet nur 1x von selbst nach
Boh ey,
wie komm ich mir denn vor? Wo steht geschrieben, dass man setinterval() nur setzen darf, wenn man das Intervall auch wirklich ändern will? Ich habe da nichts zu gelesen. Ist vielleicht jemand hier, der bessere Augen hat? Also, es klappt. Aber nur wenn man Setinterval() setzt, wenn sich der Wert geändert hat.
Man setzt also vor dem Start einmal das Interval und dann nur noch, wenn es sich ändern soll. Also eine Art Bestätigung darf nicht sein.
wie komm ich mir denn vor? Wo steht geschrieben, dass man setinterval() nur setzen darf, wenn man das Intervall auch wirklich ändern will? Ich habe da nichts zu gelesen. Ist vielleicht jemand hier, der bessere Augen hat? Also, es klappt. Aber nur wenn man Setinterval() setzt, wenn sich der Wert geändert hat.
Man setzt also vor dem Start einmal das Interval und dann nur noch, wenn es sich ändern soll. Also eine Art Bestätigung darf nicht sein.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Thread startet nur 1x von selbst nach [ERLEDIGT]
Wenn du immer bestätigst, dass der nächste Start in einigen ms eintreten soll, verschiebst du diesen doch oder
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Thread startet nur 1x von selbst nach [ERLEDIGT]
Bitte etwas genauer Hubert, ich kann Dir so früh nicht folgen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Thread startet nur 1x von selbst nach [ERLEDIGT]
Na bei jedem :setInterval( nWert ) wird doch der nächste Start auf nWert/100 Sekunden verschoben.
Wenn du nun vor 20/100 Sekunden die 100 gesetzt hast, müsste in 80/100 Sekunden der nächste Start sein.
Du "bestätigst" nun aber mit einem :setInterval( nWert ), wenn nWert auch heruntergezählt wird, könnte das noch funktionieren,
ich denke aber dass dies nicht der Fall ist und dann verschiebst du den nächsten Start wieder auf nWert/100 Sekunden.
Das ist wie mit den Aufträgen an Kinder oder Ehemänner ... "mach ich gleich ..." kommt auch nie was dabei raus
Wenn du nun vor 20/100 Sekunden die 100 gesetzt hast, müsste in 80/100 Sekunden der nächste Start sein.
Du "bestätigst" nun aber mit einem :setInterval( nWert ), wenn nWert auch heruntergezählt wird, könnte das noch funktionieren,
ich denke aber dass dies nicht der Fall ist und dann verschiebst du den nächsten Start wieder auf nWert/100 Sekunden.
Das ist wie mit den Aufträgen an Kinder oder Ehemänner ... "mach ich gleich ..." kommt auch nie was dabei raus
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Thread startet nur 1x von selbst nach [ERLEDIGT]
Wieso?
Ich starte den Thread, er arbeitet sein Ding ab und ich setze danach das Interval neu.
Wenn ich Dich richtig verstanden habe, denkst Du ich erhöhe mit jedem Setzen das Intervall? Oder verschiebe es? Verstehe ich nicht. Die Aufgabe wird erfüllt und dann sage ich ihm, wann die nächsten Kohlen aus dem Keller holen soll. Und nicht bevor die letzten Kohlen geholt wurden.
Ich starte den Thread, er arbeitet sein Ding ab und ich setze danach das Interval neu.
Wenn ich Dich richtig verstanden habe, denkst Du ich erhöhe mit jedem Setzen das Intervall? Oder verschiebe es? Verstehe ich nicht. Die Aufgabe wird erfüllt und dann sage ich ihm, wann die nächsten Kohlen aus dem Keller holen soll. Und nicht bevor die letzten Kohlen geholt wurden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Thread startet nur 1x von selbst nach [ERLEDIGT]
ich verstehe was du meinst und hatte dein Beispiel nicht richtig gelesen.
Mein Beispiel zeigt, dass er nach dem 2. "Verlängern" den code nicht mehr ausführt, aber atEnd() auch nicht ausführt.
Irgendwie hängt er im Wartezustand ...
Mein Beispiel zeigt, dass er nach dem 2. "Verlängern" den code nicht mehr ausführt, aber atEnd() auch nicht ausführt.
Irgendwie hängt er im Wartezustand ...
Code: Alles auswählen
PROCEDURE Main
LOCAL oThread := NIL
LOCAL nInterval := 100 // jede Sekunde ein Durchgang
LOCAL cName, cVorname
CLS
@ 1,1 say "Threadtestprogramm wartet auf Eingaben"
cName := cVorname := space(50)
oThread := Thread():new()
oThread:setInterval(nInterval)
oThread:atStart := {|| DispOutAt( 7, 30, "Thread: "+ntrim(ThreadID())+" => Time(): "+time()+" ist gestartet" ) }
oThread:atEnd := {|| DispOutAt( 8, 30, "Thread: "+ntrim(ThreadID())+" => Time(): "+time()+" endet" ) }
oThread:start( "Anzeige" )
@ 2,1 say "MAIN ThreadID()="+str(ThreadID())
@ 10,10 SAY "Nachname" GET cName
@ 12,10 SAY " Vorname" GET cVorName
READ
oThread:setInterval( NIL) // wenn dieses fehlt, wird (zumindest bei mir) NICHT in :atEnd aufgeräumt.
@ 22,10 SAY " Ende in 10 Sekunde oder nach Tastendruck "
inkey(10)
RETURN
PROCEDURE Anzeige
local oT := ThreadObject(), nCount := oT:startCount
DispOutAt( 2, 30, "Thread: "+ntrim(ThreadID())+" => Time(): "+time()+" Lauf: "+ntrim(nCount,5)+" " )
do case
case nCount <= 5
// OK
case nCount > 5 .and. nCount < 15
DispOutAt( 4, 50, "Jetzt 200 ..."+time() )
oT:setInterval(200)
otherwise
DispOutAt( 4, 50, "Jetzt NIL "+time() )
oT:setInterval(NIL)
end
RETURN
function ntrim(n);return alltrim(str(n))
Gruß
Hubert
Hubert