![]() |
Problem mit COM dll und Thread
Hallo,
ich habe ein Messgerät, welches über eine COM dll gesteuert wird. Da die eine Messung initiierende Funktion blockiert, bis die Messung abgeschlossen ist, soll die in einem eigenene Thread ablaufen, um die GUI nicht zu blockieren. Jetzt habe ich folgendes Problem: - Die Measure-Funktion im Hauptthread aufgerufen läuft genau wie sie soll:
Delphi-Quellcode:
- Die Measure-Funktion im Thread aufgerufen erzeugt eine Access Violation innerhalb der COM dll:
procedure TForm1.Button1Click(Sender: TObject);
begin pico.Measure('S11'); //geht end;
Delphi-Quellcode:
Hat dafür jemand eine Erklärung?
procedure MeasureThread.DoExecute;
begin while not terminated do pico.Measure('S11'); //access violation in COM dll end; procedure MeasureThread.Execute; begin inherited; CoInitialize( nil ); try DoExecute; finally CoUninitialize; end; end; |
AW: Problem mit COM dll und Thread
Hallo,
ich glaube eine COM-DLL muss für Multithreading Nutzung einen entsprechenden Modus Deklarieren. Das müsste also der Anbieter tun. Wenn das nicht hinzubekommen sein sollte, dann könnte man ein kleines Programm Schreiben welches die DLL Benutzt und von deinem asynchron aufgerufen wird und über einen Mechanismus (Named Pipe, TCP Verbindung im Local Host, Memory Mapped File...) die Daten zurückliefert. Hätte man da einen bidirektionalen Mechanismus könnte deine Anwendung dem Messprogrämmchen dann auch mitteilen, wann es beendet werden soll. Die andere Frage ist aber auch: wie liefert diese COM-DLL die Daten zurück? Gibt's da evtl. irgendwelche Callbacks die da dann bei dir aufgerufen werden und in denen du mit deinem GUI interagierst? Das müsste dann ja auch Thread sicher passieren! Grüße TurboMagic |
AW: Problem mit COM dll und Thread
Zitat:
Danke für die Tipps! |
AW: Problem mit COM dll und Thread
Zitat:
Delphi-Quellcode:
CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 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