Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

Arbeiten mit TThreadlist

  Alt 19. Jan 2017, 22:09
Delphi-Version: 10 Seattle
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:
  1. Wozu dient die Anweisung myList:= threadList1.LockList; . Was spricht dagegen direkt auf ThreadList1 zuzugreifen
  2. 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

Geändert von norwegen60 (19. Jan 2017 um 23:10 Uhr)
  Mit Zitat antworten Zitat