+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Drucken in Threads und Performanceoptimierung


(Philipp Winkel) #1

Hallo liebe List & Label Profis,
um eine bessere Performance und Prozessorauslastung während der Aufbereitung der Vorschau zu erzielen, wollte ich den Druck-Funktion in einen eigenen Thread auslagern. Funktionieren tut das ganze einwandfrei, Druck und Anzeige der Vorschau in dem PreviewControl laufen nebeneinander.
Im debwin-Debugger erscheint nur bei jedem Aufruf einer LL Funktion innerhalb des Threads die Meldung:

“This job is being used by a thread that is different from the thread that created ist. This should be avoided!”.

Also erzeugte ich auch den Job innerhalb des Threads, nur blieb die Meldung bestehen. Habe ich da noch etwas übersehen oder handelt es sich um eine ungefährliche Warnung die ich ignorieren kann?
Leider fand ich in den Dokumentationen und Beispielen keinen Hinweis darauf wie man richtig in Threads druckt, um eine bestmögliche Prozessorauslastung und Performance zu erhalten.

Weiterhin habe ich alle KB-Einträge und Forenhinweise zu einem schnellen Druck durchgearbeitet, jedoch brachte es kaum eine merkliche Besserung. Ich muss dazu gestehen, dass die betreffende Liste viele Linien enthält und ein Datensatz über eine Seite geht.
Was mir nur aufgefallen ist, dass der Aufruf von LLPrintStart() bei gleicher Liste unterschiedlich lang dauert (Zeitdifferenzen bis 10s).

Ich verwende List & Label 18 mit Delphi XE2 in Master-Detail Druckjobs.

Ich freue mich über jede Anregung und Hilfe, vielen Dank im Voraus!
Gruß Philipp


(Philipp Winkel) #2

Nachtrag, wie es nun mal so ist wenn man den nächsten Tag nochmal über den Code schaut…

Das Druckobjekt muss erzeugt werden, wenn der Thread schon angelaufen ist und nicht nur erzeugt, Dann erscheint auch die erwähnte Fehlermeldung nicht.

Weiterhin konnte ich das Zeitproblem bei der Liste wirklich auf die Linien einschränken, gibt es da eine Möglichkeit trotzdem noch etwas daran zu machen? Die Linien zu entfernen ist leider keine Option…

Viele Grüße
Philipp


(combit Support - Erdal Alacali) #3

Sehr geehrter Herr Winkel,
vielen Dank für Ihren Beitrag.

Was genau ist mit “Linien” gemeint, sprechen wir hier von Linienobjekten oder meinen Sie etwas anderes, könnten Sie das kurz noch beschreiben.

Des Weiteren denke ich, dass wir hier ohne eine Logdatei nicht weit kommen werden, um eine Logdatei hochzuladen müssten Sie einen Supportcase über das Supportportal öffnen, es kommt noch hinzu das Sie eine alte Version von List & Label verwenden und das Verhalten in der aktuellsten möglicherweise nicht auftritt.

Eine Empfehlung meinerseits, laden Sie sich die aktuellste Version von List & Label als Trial herunter und prüfen Sie das Verhalten erneut, Vielen Dank.

Mit freundlichen Grüßen

Erdal Alacali
Technischer Support
combit GmbH

Ich muss dazu gestehen, dass die betreffende Liste viele Linien enthält und ein Datensatz über eine Seite


(Philipp Winkel) #4

Hallo Herr Alacali,
in meinem Fall geht es um Linien innnerhalb eine Berichtscontainers, bzw. dessen Tabellen.

Derzeit konnte ich die Performance darüber hinaus vebessern, den Vorschau-Druck in einen Thread auszulagern und die Statusinformationen dessen mit einer Message zu senden. Das muss derzeit erst einmal genügen.

Wenn es die Zeit zulässt, werde ich die aktuelle Version einmal testen und anschließend berichten.

Vielen Dank für die freundliche Unterstützung!

Viele Grüße
Philipp