AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Hilfe! Timer innerhalb eines Thread laufen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe! Timer innerhalb eines Thread laufen lassen

Ein Thema von divBy0 · begonnen am 15. Mai 2007 · letzter Beitrag vom 15. Mai 2007
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#1

Hilfe! Timer innerhalb eines Thread laufen lassen

  Alt 15. Mai 2007, 12:41
Hallo !

Hab folgendes Problem und komme einfach nicht auf die Lösung.
Also, ich möchte gerne einen eigenen Thread erzeugen, in dem sollte dann ein Timer laufen, welcher dann in entsprechenden Intervallen Daten von einer Schnittstelle liest.

Mein Problem dabei ist, dass ich nicht weiß, wie ich denn den Timer in den Thread bekomme und der Timer dann innerhalb dieses Threads noch eine Funktion oder Prozedur aufruft...

Wenn mir da jemand helfen kann, dann bitte posten...

Danke!!!
Marc
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Hilfe! Timer innerhalb eines Thread laufen lassen

  Alt 15. Mai 2007, 12:43
Ist ein Thread nicht unter anderem dazu da, damit man keinen Timer braucht?
Richard Mahr
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#3

Re: Hilfe! Timer innerhalb eines Thread laufen lassen

  Alt 15. Mai 2007, 12:43
Timer in einem Thread?

Implementiert die Wartezeiten lieber direkter, z.B. mit WaitForMultipleObjects...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Hilfe! Timer innerhalb eines Thread laufen lassen

  Alt 15. Mai 2007, 12:46
der normale Timer beruht auf WindowMessages. Das heißt das du eine Nachrichtenschleife implementieren müsstest. Aber in einem Thread ist das nicht so sinnvoll. Dann kannst du lieber gleich mit SetTimer arbeiten und eine Call-Backmethode angeben.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Hilfe! Timer innerhalb eines Thread laufen lassen

  Alt 15. Mai 2007, 12:47
Vielleicht als Erklärung:

Das Programm soll in gleichen Abständen Daten von einer seriellen Schnittstelle abrufen. Da das ganz aber warscheinlich ziemlich langsam wird wollte ich das Abrufen der Daten in einem Thread realisieren, da die anderen Programmteile noch weiterlaufen müssen.

Wie wäre denn ein sauberer Lösungsweg für diese Aufgabe?
Marc
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Hilfe! Timer innerhalb eines Thread laufen lassen

  Alt 15. Mai 2007, 12:51
dann könntest du den Timer außerhalb des Threads laufen lassen und im OnTimer den Thread starten! (fände ich die sinnvollste Lösung, dabei natürlich drauf achten das der Timer erst wieder angeworfen wird wenn der Thread fertig ist). Oder du startest bei Programmstart den Thread und legst den Thread für eine bestimmte Zeit schlafen. Aber es macht in deinem Fall recht wenig sinn den Timer die ganze Zeit laufen zu lassen (Timer-Messages empfangen lassen) wenn er nur ab und an gebraucht wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Hilfe! Timer innerhalb eines Thread laufen lassen

  Alt 15. Mai 2007, 12:52
Na einfach im Thread schlafen mit Sleep.
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Hilfe! Timer innerhalb eines Thread laufen lassen

  Alt 15. Mai 2007, 12:57
Sorry für die warscheinlich dumme Frage:

Ein Thread ist doch keine Endlosschleife, oder? Dann würde der Thread doch nur einmal durchlaufen und dann wird dann beendet.

Werde ich aber gleich mal ausprobieren... Danke SirThornberry und Robert
Marc
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#9

Re: Hilfe! Timer innerhalb eines Thread laufen lassen

  Alt 15. Mai 2007, 13:03
Ein Thread ist eine (Fast)-Endlosschleife. Man hat ueblicherweise eine "while not Terminated do"-Schleife als Kern des Threads. Man sollte deshalb nicht zu lange schlafen, denn man will ja den Thread auch mal beenden.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Hilfe! Timer innerhalb eines Thread laufen lassen

  Alt 15. Mai 2007, 13:07
Genau, ein Thread ist keine Endlosschleife. Letzendlich hast du aber schon immer mit einem Thread gearbeitet (dem Hauptthread der dein Programmfenster malt etc.). Dieser Thread ist auch keine Endlosschleife sondern eine Schleife die solange läuft bis eine bestimmte Message (schließen) empfangen wird. Und genau so verhält es sich bei Threads. Diese laufen genau wie Consolenanwendungen von oben nach unten durch und wenn keine Schleife da ist, läuft das Programm bis zu Ende und schließt sich.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz