Moin !
@himitsu:
Vielen Dank für deine Erweiterung. Das klappt nun erstaunlich gut
Auch die Speicherbelastung bleibt wie erwartet niedrig.
Hätte dann noch ein paar wetere Fragen (und hoffentlich gehe ich euch nicht zu sehr auch den Sac*
).
1) Event an Thread
Wenn ich nun möchte das der Thread nur jede Sekunde die Daten verarbeitet, dann könnte ich doch einfach in TDataClass.Add bei FEvent.SetEvent eine Zeitliche Überprüfung einbauen.
Also sowas wie Millisecondsbetween(Now, Then) >= 1000 ... ?
2) Ich möchte ja die Daten auch in ein Chart schreiben. Und am liebsten würde ich die Daten natürlich so im Chart ablegen, dass der Hauptthread der Anwendung möglichst unbelastet bleibt.
Delphi-Quellcode:
TWorker = class(TThread)
private
FDataClass : TDataClass;
FChart : TChart;
protected
procedure Execute; override;
public
constructor Create(DataClass: TDataClass; Chart : TChart);
end;
So funktioniert das zwar im Thread, aber eigentlich müsste es ja über ein Synchronize laufen, oder? Aber das läuft ja dann wieder im Hauptthread.
3) Wie verhält sich TDataClass wenn der Hauptthread ausgelastet ist?
Derzeit erzeuge ich die Instanz von TDataClass ja im Hauptthread der Anwendung. Wenn die aber nun gerade zu 100% ausgelastet ist, was macht dann TDataClass? Dann würde doch ein Add nicht mehr zur Anwendung kommen, oder?
Das wäre natürlich fatal weil ich dann mitunter Daten verlieren könnte.
Könnte man TDataClass ggf. selber als Thread auslegen und somit vom HAuptthread abkapseln?