Entwickler-Ecke

Windows API - Viele Threads gelichzeitig


MrFox - Do 08.09.05 12:00
Titel: Viele Threads gelichzeitig
Hi Leute,

Ist es möglich sehr viele Threads (bis zu 50) gleichzeitig auf ebenfalls bis zu 50 verschiedene Visuelle Objekte die auf dem Formular liegen zuzugreifen. Dabei ist es absolut ausgeschlossen, dass mehrere Threads auf das selbe Objekt zugreifen.


Moderiert von user profile iconChristian S.: Topic aus CLX / Delphi Language (Object-Pascal) verschoben am Do 08.09.2005 um 13:55


arj - Do 08.09.05 12:33

Ich denke schon, dass das möglich ist, auch wenn ich den Sinn nicht ganz verstanden habe.

50 Threads? Sind ziemlich viele! Für was brauchst du die denn alle?


MrFox - Fr 09.09.05 08:33

Ich programmiere eine Simulation einer Fallblatt-Anzeigetafel (Wie sie an großen dt. Bahnhöfen zu finden ist).
Dabei bewegen sich natürlich ab und zu auch mal mehrere Anzeigemodule gleichzeitig.


Udontknow - Fr 09.09.05 08:45

Hallo.

Vorsicht! Steuerelemente dürfen nicht von keinen anderem Thread als dem VCL-Hauptthread angepackt werden.

Ausserdem ist doch eine Aktualisierung von beispielsweise Panels oder Editfeldern hintereinander noch immer quasi gleichzeitig, da kein Mensch den zeitlichen Unterschied erfassen kann.

Cu,
Udontknow


MrFox - Sa 10.09.05 13:44

Nicht wenn es sich um 50 Stück handelt und dessen Größe schrittweise verändert wird. Mein PC (1,4 Ghz) schafft das jedenfalls nicht so schnell das man es als "gleichzeitig" betrachten könnte.

Gibt es überhaupt eine möglichkeit auf der Grafikoberfläche etwas "gleichzeitig" bzw. unabhängig voneinander zu verändern?


Udontknow - Sa 10.09.05 15:58

Mit der VCL: Nein.

Aber eine Fallblatt-Anzeigetafel-Simulation muß sich doch nicht schrittweise (was immer du damit meinst) aktualisieren, auch wenn das vielleicht lustig aussieht.

Cu,
Udontknow


MrFox - Sa 10.09.05 18:47

user profile iconUdontknow hat folgendes geschrieben:
Mit der VCL: Nein.

Und irgendwie anders? DelphiX? Windows-API?;

user profile iconUdontknow hat folgendes geschrieben:

Aber eine Fallblatt-Anzeigetafel-Simulation muß sich doch nicht schrittweise (was immer du damit meinst) aktualisieren, auch wenn das vielleicht lustig aussieht.

Weißt du was eine Fallblatt-Anzeigetafel ist?

Wenn ja dann: Das von oben "herunterfallende" Blatt (mit der neuen sichtbaren Aufschrift), welches das vorherige Blatt überdeckt simuliere ich durch ein Label, was ein anderes Label durch schrittweise vergrößerung der Höhe schrittweise (für das menschliche Auge natürlich fließend) überdeckt.


Udontknow - So 11.09.05 11:18

Ja, nun. Wie ich schon sagte, der Effekt sieht zwar neckisch aus, ist aber nicht wirklich wichtig für die Programmfunktionalität, also das Anzeigen von einfahrenden Zügen, Verspätungen etc. Was spricht gegen eine schlichte Aktualisierung der Edit-Felder? Oder ist das zwingende Vorgabe?

Wenn es dir darauf ankommt:

Hast du schon versucht,anstelle von Editfeldern schlicht und ergreifend auf eine Bitmap zu zeichnen bzw in einer Paintbox die Zustände darzustellen? Hier sei noch auf "DoubleBuffered" verwiesen. Schliesslich benötigst du Input-Funktionalität ja nun überhaupt nicht.

Ansonsten bekommst du natürlich auch mit DirectX sehr schön solche Fliesseffekte hin, aber ob sich der Aufwand lohnt, sei dahingestellt.

Cu,
Udontknow


MrFox - Mo 12.09.05 07:31

Werds gleich mal versuchen.