Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Mavarik,
30. Okt 2019
Das ist kein Mittel um Threadsafe auf eine Liste oder Dictionary zuzugreifen!
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Mavarik,
30. Okt 2019
OK und wie? Wenn Du aus einem Thread in die Objectlist oder Dictionary schreibst musst Du verhindern, dass gleichzeitig Dein TimerEvent liest. Sicherlich ist lesen nicht so kritisch wie gleichzeitiges schreiben... Aber spätestens bei zwei threads must du locken.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Mavarik,
30. Okt 2019
Und wenn ich neben dem gesamt download den Fortschritt aller einzelnen Threads anzeigen möchte?
Dann ggf. noch eine Uhr, eine Statusanzeige die anzeigt, dass die Datenbank sich mit der Cloud synchronisiert.
Die Aktien chart, die upgedatet werden muss, uvm.
Und warum soll ich permanent einen Timer laufen lassen der immer wieder in einer Queue nachschaut, wenn es (wie mein Beispiel (#8) gezeigt...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Mavarik,
29. Okt 2019
Ich will nicht, das meine UI permanent nachschauen muss... Abgesehen davon muss ich dann eine Queue nehmen die das Threadsafe Locking macht - wofür?
Ich will auch nicht für jedes Update aus einen Thread nen dummen Timer habe, den ich jeden smal vorher starten und nach der Verarbeitung wieder anhalten muss.
ggf. Habe ich 10 Thread die etwas machen - soll ich dafür 10 Timer nehmen, 10 Queues...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Mavarik,
29. Okt 2019
Wofür eine Schleife?
Und warum willst Du die UI Task damit nerven per Timer etwas auszulesen? Du hast doch den TThread.Queue(NIL,Procedure...
Das geht sicherlich auch - verwende ich auch gerne, wenn ich ein Multicast benötige.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Mavarik,
29. Okt 2019
Also...
Du startest einen Thread und in diesem Thread willst Du die UI aktualisieren...
Die richtige Antwort hängt von Deiner intention ab...
1.) Willst Du unbedingt alle UI Updates zeigen: Synchronize
2.) Ist es Dir egal, ob die UI alle Zwischenwerte anzeigt: Queue
Ist Deine Statusupdate sehr schnell: Werte nur dann aktualisieren, wenn seit dem letzten update wenigsten z.B. 500ms...