Hallo zusammen,
ich möchte im 0.1s Takt anfallende Daten in die Datenbank schreiben ohne dass eventuelle Verzögerungen beim Schreiben der Daten zu einer Verzögerungen beim Erfassen der Daten führt. Angedacht ist ein Thread der unabhängig vom Hauptthread die Daten in die
DB schreibt. U.U. auch ein Thread, der die Datn erfasst. Dabei dachte ich an die Abarbeitung der Daten mit TThreadlist. Ich habe mir das Embacadero-Beispiel angeschaut.
Delphi-Quellcode:
procedure TListThread.Execute;
var
I: Integer;
Temp: TControl;
myList: TList;
begin
while(True) do
begin
if (Terminated) then
begin
listthreadRunning:= FALSE;
exit;
end;
Form1.ListBox1.Clear;
myList:= threadList1.LockList;
try
for I := 0 to myList.Count-1 do
begin
Temp:= myList.Items[I];
Form1.ListBox1.Items.Add(Temp.Name);
end;
finally
myList:= threadList1.UnLockList;;
end;
Sleep(1000);
end;
listthreadRunning:= FALSE;
end;
Meine Fragen:
- Wozu dient die Anweisung myList:= threadList1.LockList;
. Was spricht dagegen direkt auf ThreadList1 zuzugreifen
- Wenn myList, kann ich die Anweisung myList:= threadList1.LockList;
nicht gleich nach der Zuweisung wieder aufrufen
Problem dieses Beispiels: So lange die for-Schleife läuft ist die Liste gesperrt und mein Ziel, die Daten zu erfassen, verfehlt da ja
threadList1.LockList;
gesetzt ist.
Wie kann ich das verhindern?
Danke für eure Unterstützung
Gerd