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?