Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
Delphi 12 Athens
|
AW: Problem mit COM dll und Thread
10. Jan 2022, 15:53
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:
procedure TForm1.Button1Click(Sender: TObject);
begin
pico.Measure('S11'); //geht
end;
- Die Measure-Funktion im Thread aufgerufen erzeugt eine Access Violation innerhalb der COM dll:
Delphi-Quellcode:
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;
Hat dafür jemand eine Erklärung?
Versuchs mal mit
CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
Peter Below
|
|
Zitat
|