Thread pausieren [ERLEDIGT]
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
Thread pausieren [ERLEDIGT]
Hi,
wie lasse ich eigentlich einen Thread pausieren?
wie lasse ich eigentlich einen Thread pausieren?
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!!
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Re: Thread pausieren
ThreadWait()
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
Re: Thread pausieren
Grrr,
habe es gefunden. Wie blind kann man eigentlich sein?
habe es gefunden. Wie blind kann man eigentlich 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!!
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
Re: Thread pausieren
Aber ob ich das so gebrauchen kann?
Ich möchte einen mit Intervallzeit gestarteten Thread per Pushbutton anhalten um das Ergebnis am Bildschirm anzusehen und dann soll er mit einem Pushbutton wieder weiterlaufen. Ich verstehe Treadwait() irgendwie anders. Das ein Thread auf einen anderen wartet. Das brauche ich in dem Fall nicht.
Naja, ich könnte natürlich auch die Intervallzeit für den Moment extrem hoch setzen. Er wird ja entweder kurz danach wieder gestartet, oder abgebrochen.
Ich möchte einen mit Intervallzeit gestarteten Thread per Pushbutton anhalten um das Ergebnis am Bildschirm anzusehen und dann soll er mit einem Pushbutton wieder weiterlaufen. Ich verstehe Treadwait() irgendwie anders. Das ein Thread auf einen anderen wartet. Das brauche ich in dem Fall nicht.
Naja, ich könnte natürlich auch die Intervallzeit für den Moment extrem hoch setzen. Er wird ja entweder kurz danach wieder gestartet, oder abgebrochen.
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!!
- Herbert
- Der Entwickler von "Deep Thought"
- Beiträge: 1991
- Registriert: Do, 14. Aug 2008 0:22
- Wohnort: Gmunden am Traunsee, Österreich
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Thread pausieren
Threadwait wird bei dir kaum passen. Threadwait wartet auf den Abschluss eines Threads (bei Zeitangabe sogar nur innerhalb dieser Zeit).
Falls der Pushbutton innerhalb deines Threads ist, der warten soll, dann machs plump: Einfach das Ergebnis in einer modalen Box anzeigen, so fährt das Programm erst wieder dort weiter, wenn du diesen Dialog abgeschlossen hast (ähnlich wie bei JA/NEIN-Frage-Fenster).
Falls der Pushbutton innerhalb deines Threads ist, der warten soll, dann machs plump: Einfach das Ergebnis in einer modalen Box anzeigen, so fährt das Programm erst wieder dort weiter, wenn du diesen Dialog abgeschlossen hast (ähnlich wie bei JA/NEIN-Frage-Fenster).
Grüsse Herbert
Immer in Bewegung...
Immer in Bewegung...
- brandelh
- Foren-Moderator
- Beiträge: 15689
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Thread pausieren
Hi,
ich habe eine Auswertungsroutine, die abgebrochen werden kann.
Hier nutze ich eine private variable zum steuern, man könnte auch eine lokale per Parameter
an den Thread (per Referenz) übergeben oder eine exportierte Instanzvariable des Threads,
aber so ist es einfacher:
du könntest hier einfach eine Wartebedingung einbauen:
ich habe eine Auswertungsroutine, die abgebrochen werden kann.
Hier nutze ich eine private variable zum steuern, man könnte auch eine lokale per Parameter
an den Thread (per Referenz) übergeben oder eine exportierte Instanzvariable des Threads,
aber so ist es einfacher:
Code: Alles auswählen
m->Abbruch := .f.
...
do while ! eof() // Im Thread....
...
if m->Abbruch
Thread beenden
du könntest hier einfach eine Wartebedingung einbauen:
Code: Alles auswählen
m->Warten := .f.
...
do while ! eof() // Im Thread....
...
do while m->Warten
sleep(10) // 10 mal pro Sekunde oder weniger ? prüfen
enddo
...
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
Re: Thread pausieren
Hm,
das mit der Wartebedingung. Man könnte ja dann einfach den Aufruf ohne Ablauf wieder zurückschicken. Der Thread läuft zwar weiter, aber arbeitet die Funktion nicht ab. Das wäre möglich. In meinem Falle vielleicht sogar eine gute Lösung.
das mit der Wartebedingung. Man könnte ja dann einfach den Aufruf ohne Ablauf wieder zurückschicken. Der Thread läuft zwar weiter, aber arbeitet die Funktion nicht ab. Das wäre möglich. In meinem Falle vielleicht sogar eine gute Lösung.
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: 15689
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Thread pausieren
In meinem Beispiel wird der Thread mitten in seiner Verarbeitung angehalten, ohne dass Systemresourcen verschwendet werden
Dennoch ist der Thread genau an der richtigen Stelle zum Weiterarbeiten.
Wie auch immer, hauptsache du weißt was du tust
Dennoch ist der Thread genau an der richtigen Stelle zum Weiterarbeiten.
Ich weiß nicht was du damit meinst, zurückschicken klingt wie beenden, dann läuft aber auch nichts mehrManfred hat geschrieben:Man könnte ja dann einfach den Aufruf ohne Ablauf wieder zurückschicken. Der Thread läuft zwar weiter, aber arbeitet die Funktion nicht ab.
Wie auch immer, hauptsache du weißt was du tust
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
Re: Thread pausieren
ok,
anders ausgedrückt: die Funktion, die der Thread immer wieder aufruft, wir einfach übersprungen durch eine IF Schleife.Der Thread als solcher kann/darf ja ruhig weiterlaufen, er darf bloß die Routine nicht aufrufen. Gestoppt würde der Thread dann durch einen anderen Button.
anders ausgedrückt: die Funktion, die der Thread immer wieder aufruft, wir einfach übersprungen durch eine IF Schleife.Der Thread als solcher kann/darf ja ruhig weiterlaufen, er darf bloß die Routine nicht aufrufen. Gestoppt würde der Thread dann durch einen anderen Button.
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!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9345
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 100 Mal
- Danksagung erhalten: 359 Mal
- Kontaktdaten:
Re: Thread pausieren
Wenn Dein Thread immer wieder eine Funktion aufruft, die die eigentliche Arbeit leistet, muss diese Funktion nur bei jedem Aufgerufenwerden prüfen, ob z.B. eine statische Variable (oder eine Instanzvariable der abgeleiteten Thread-Klasse, was viel eleganter wäre) gesetzt ist oder nicht. Und wenn sie gesetzt ist, wartet die Funktion, wie Hubert das gezeigt hat, und gibt nichts zurück. Nur wenn die Variable nicht gesetzt ist, macht sie was. Für den Abbruch des Threads, was ein weiterer Schuh wäre, müsste dann die Schleife im Thread selbst eine weitere iVar prüfen. Also, wie gesagt: Eigene Thread-Klasse ableiten, um zwei iVars "lThreadPause", "lThreadAbort" ergänzen, Threadobjekt an Funktion übergeben, Variableninhalte regelmäßig prüfen. ThreadWait() oder Synchronize() sind für diese Geschichte ungeeignet, da sie den aufrufenden Thread betreffen.
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15689
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Thread pausieren
Wenn du in dem Thread eine Schleife hast wie diese hier:
musst du halt sicherstellen, dass der Thread nicht sofort wieder weiter in die Schleife geht,
das würde sonst den Rechner richtig belasten:
besser so:
wenn aber dein Thread einfach "ausgeht" und nach einem Zeitinterval neu startet,
dann paßt das ohne sleep()
Code: Alles auswählen
... im Thread
do while ?
MeineFunktion()
enddo
das würde sonst den Rechner richtig belasten:
Code: Alles auswählen
... im Thread
do while ?
if M->Arbeiten // wehe wenn das hier falsch wird ;-)
MeineFunktion()
endif
enddo
Code: Alles auswählen
... im Thread
do while ?
if M->Arbeiten // wehe wenn das hier falsch wird ;-)
MeineFunktion()
else
sleep(10)
endif
enddo
dann paßt das ohne sleep()
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
Re: Thread pausieren
Jungs,
Danke, ich habe es mit den Threadvars gemacht und bin gerade dabei es zu implementieren, sprich auch zu testen. =D>
Danke, ich habe es mit den Threadvars gemacht und bin gerade dabei es zu implementieren, sprich auch zu testen. =D>
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!!