Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#3

Re: Jobliste Kommunikation mit externem Gerät

  Alt 18. Nov 2006, 11:05
Zitat von DelphiManiac:
Ich habe versucht diese in einen extra Thread zu packen, denn ich von aussen anstosse, aber irgendwie klappt das nicht wie gewollt. Habe auch schon Luckies Tutorial zum Thema Thread gelesen.
Ich würde gerne eine Art Jobliste machen, die in einem Thread abläuft und immerwieder die Jobs (GetXYZ...) abarbeitet
und ich sie von aussen fülle.
Hi,
klingt ein wenig so, als ob etwas dabei nicht ganz geklappt hat (schließe ich aus klappt nicht wie gewollt), aber du sagst nicht was genau anders läuft. Wäre schön wenn du also noch sagen würdest, was du probiert hast und was dabei passiert ist.

An sich denke ich kannst du hier einfach einen Thread nehmen, der eine Methode besitzt, mit der ihm von außen Jobs hinzugefügt werden und ggf. natürlich einer weiteren, die Ergebnisse nach außen reicht.
Dazu wäre der imho sauberste Weg, dass du eine abstrakte Klasse Job schaffst, die einfach eine Methode zum abarbeiten des Jobs besitzt. Ist diese Methode abstrakt, kann jeder Nachfahre sie beliebig implementieren. Der Vorteil ist damit natürlich, dass diese Liste für jede Art von Job geeignet ist.
Die Jobs kannst du dann im Thread in einer TObjectList speichern. Im einfachsten Fall besteht dann die Execute-Methode des Threads einfach nur in einer Endlosschleife, die schaut ob die Job-Liste leer ist und sonst den ersten Job (oder dringensten oder oder) Job aus der Liste nimmt und ausführt. Ok, das Pollen ist an der Stelle nicht so schön, da könntest du sicher auch mit Signalen arbeiten, aber für einen ersten Test dürfte es reichen. Später dann einfach den Thread schlafen legen, so dass der auf ein Signal reagiert, dass du immer dann setzt, wenn du etwas in die Liste einfügst.

Beim einfügen in die Liste solltest du dann unbedingt synchronisieren. Also hier meine ich die Verwendung eines Sperrobjekts, da du insbesondere beim pollen sonst das Problem bekommen kannst, wann ein Objekt eingefügt wurde und wann die Abfrage nach dem Füllstand der Liste erfolgt.

Hoffe ist grob klar, wie ich das meine. Letztlich wäre es aber wichtig zu wissen, was du bisher versucht hast und woran du eigentlich wirklich scheiterst um dir zu helfen. Deshalb erstmal nicht mehr dazu, frag einfach noch mal genauer nach

Gruß Der Unwissende
  Mit Zitat antworten Zitat