Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Problem mit COM dll und Thread

  Alt 10. Jan 2022, 14: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
  Mit Zitat antworten Zitat