Prüfen, ob sich ein Befehl bereits im Stack befindet?
10. Feb 2017, 22:45
Guten Abend,
besteht eine Möglichkeit zu prüfen, ob sich ein Befehl bereits im Stack befindet, bevor man den gleichen Befehl nochmal hinzufügt?
In meinem Projekt benutze ich QuantumGrid von DevExpress in Verbidnung mit einer CustomDataSource, die ununterbrochen mit neuen Daten gefüllt wird. Damit die neuen Daten im Grid angezeigt werden, muss ich immer wieder eine und dieselbe Methode DataChanged()
ausführen. Da die Daten von Theads bereitgestellt werden und die Ausführung der Methode unbedingt synchronisiert erfolgen muss und anderseit keinesfalls vom Thread abhängig ist, packe ich den Befehl in eine anonyme Thread-Methode und lege diese auf den Stack:
TThread.Queue(nil, procedure() begin cdsAllData.DataChanged; end);
Darüber hinaus müssen für alle Gridrecords noch die Bilder nachgeladen und auch wieder mit DataChanged()
im Grid sichbtar gemacht werden.
Manchmal kommen auf einmal so viele Datenpakete rein, dass der sich im Stack bereits mehrere o.g. Befehle warten, während ein Thread im Begriff ist, den gleichen Befehl erneut hinzuzufügen. Dabei hatte die nächste DataChanged()
aus dem Stack bereits alles erledigt.
|