[
OT]ich finds verständlich. Durch die Verwendung von Threads:
- würden ja sonst mehrere gleichzeitig auf Printers.Canvas arbeiten (der Hauptthread + der erzeugte Thread). Bei wahl des gleichen Druckers würden die Dinge dann wohl übereinander gemalt. Und während ein Thread mit auf der Canvas malt etc. und der andere Thread setzt das Printer-Object plötzlich auf einen anderen Drucker um kommt auch müll raus. Und wenn plötzlich der andere Thread ein NewPage macht landet plötzlich auch alles auf dem nächsten Blatt und das erste bleibt unvollständig.
Zudem ist unklar ob das
VCL-Printers-Object Threadsafe ist.
Um das Threadsafe etc. abzusichern würde ich das Drucken im Thread in eine
DLL auslagern. Diese
DLL dann dynamich im Thread laden und die Druckfunktion aufrufen. Dadurch ist der Hauptthread in der
DLL dieser welchen du vorher manuell gestartet hast (denn der Hauptthread ist der mit welchem die Initializations etc. abgearbeitet werden).