![]() |
Threads : Anwendung <-> Daten <-> Visuelles Elem
Moin !
Ich überlege schon eine ganze Weile wie man es hinbekommt, ein visuelles Element (inmeinem Fall ein TChart) zu speichern bzw. zu laden ohne den Hauptprozess dabei zu belasten oder gar zu blockieren (verwende MDI Childs mit jeweils einem TChart). Dabei geht es konkreter um diese drei Zustände: * laden * speichern während Daten hinzugefügt werden * speichern wenn keine Daten hinzugefügt werden Das ganze ist nicht wirklich ohne Threads zu lösen. Aber da fangen dann die Probleme auch schon wieder an - Stichwort "Threads und Zugriff auf VCL Komponenten". Egal wie ich es versuche, ich habe immer Situationen in denen mein Hauptthread geblockt wird. Das mag aber auch daran liegen, das ich derzeit die Daten direkt in das Chart eintrage. Nehmen wir nur das Speichern während noch Daten eingetragen werden. Ich erzeuge mir einen MemoryStream, kopiere (in diesem Fall) das Chart in den Stream, übergebe den Stream an einen Thread der dann den Stream als Datei speichert. Aber auch hier hat man schon wieder die Situation dass das Kopieren des Charts in den Stream im Hauptthread erledigt wird. Bei großen Datenmengen -> Blockingpoint :( Kurzum, kann vielleicht mal jemand erklären wie man dieses Problem grundlegend anpacken würde? Das muss gar nicht mal auf ein Chart bezogen sein. Es ist übrigens nicht damit getan, einfach nur (im Fall des Charts) die Rohdaten zu speichern. Denn im Chart werden Charttools eingebunden die natürlich mit gespeichert werden müssen. Ich hatte schon die Idee das man das evtl. über Windowsbotschaften lösen könnte. Aber der Thread hat ja keine MessageQueue. Insofern ist das auch hinfällig. |
Re: Threads : Anwendung <-> Daten <-> Visuelles
Wenn du auf das VCL-Control zugreifst, dann muß das eh innerhalb des Hauptthread (der wo die VCL drinnen läuft) geschehen.
Lösung: Da man eh keine Daten in visuellen Komponenten speichert ... leg deine Daten in einer seperaten Variable/Datenstruktur ab und speicher dann einfach diese. In das TChart werden dann nur (Teile) dieser Daten zur Anzeige übertragen. |
Re: Threads : Anwendung <-> Daten <-> Visuelles
Moin !
Zitat:
Wir möchten die Grafik ja in Gänze abspeichern. Denn dort können alle möglichen Änderungen eingebracht werden - neben den reinen Daten. Bsp: - Beschriftungen - Änderungen an Achsentiteln - Annotation mit Zeiger - ... Dann müssten wir den Kram auch komplett abbilden. Damit würden wir dann aber die halbe Grafik engine neu proggen. Das kann ja nicht des Rätzels Lösung sein, oder? Vielleicht nehmen wir mal anstatt des TChart ein RichView. Dort schreibt man ja zwangsläufig direkt den Text rein - ergo hält das Element auch erstmal die Daten. Wie würde man es damit lösen? Denn auch hier das gleiche Problem. Wenn wir Daten in einem Chart aufzeichnen, dann könnte der User das RTF parallel speichern. Und wenn da Bilder eingefügt sind, dann blockt das auch wieder den Mail Thread. :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz