![]() |
Multithreating und DLLs, seltsamer Fehler mit OmniThreadLibrary
Liste der Anhänge anzeigen (Anzahl: 2)
Hey,
ich hatte vor ein paar Tagen ja kleines Projekt von mir hochgeladen, den HTTPManager. Nun bin ich dabei dies in DLLs zu nutzen, wobei der HTTPManager im eigentlichen Hauptprogramm erstellt wird (als Singelton) und die DLL nur eine Interface-Instanz davon bekommt. Wenn die DLL nun die "erste" Singelton Instanz bekommt, dann gibt es am Programmende einen Fehler (sonst nicht, also wenn sie im Hauptthread erstellt wird): Zitat:
Zitat:
Um den Fehler zu umgehen könnte man natürlich generell einfach folgendes in der Datei für das Singelton Interface machen:
Delphi-Quellcode:
initialization
TApiHTTPManager.GetInstance; Zuvor hatte ich noch einen Fehler, dass die Informationen für einen Request die in der DLL erstellt werden (HTTPRequest, HTTPOptions) nicht mehr freigegeben wurden und es zu weiteren Fehler kam. Dies habe ich gelöst, indem ich die Interfaces kopiert habe. Das habe ich alles händisch gemacht und mir dafür Clone Konstruktoren erstellt. Kann man dies nebenbei vielleicht irgendwie vereinfachen? Generell stellt sich mir auch die Frage ist das alles so sauber umgesetzt, gibt es Stellen die problematisch sind und was könnte man vielleicht leichter anders besser machen? Ich habe das komplette Demo Programm im Anhang und versucht alle unwichtigen Teile zu entfernen, trotzdem kann es im ersten Moment etwas unübersichtlich aussehen, deshalb noch eine Grafik in der Hoffnung das es das Verständnis vereinfacht. Ich selber benutze D2010 aber mit 2009 sollte man es auch noch kompilieren können. Grüße und schonmal vielen Dank im voraus! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 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 by Thomas Breitkreuz