Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: query.open in Threads

  Alt 15. Okt 2012, 14:41
Zitat:
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
  ...
  MThread.Synchronize(doprogress);
  ...
Das mit dem MThread wurde ja schon gesagt.
Wenn man in einer Klasse ist, dann Self verwenden (oder weglassen und das Self implizit nutzen).

Denn rate mal was passiert, wenn zu z.B. 2 Threads erstellst.
Dann greifst du nicht mehr auf den "aktuellen" Thread zu, sondern auf den, welcher in der globalem Variable liegt.

Nja, das mit der VCL und Threads wurde auch schon genannt.
Was du machen kannst, ist das Query vom Grid (der VCL) trennen, zu aktualisieren (im thread) und es dann wieder zu verbinden (im Hautthread).

Oder die Daten im Hintergrund zu laden und dann synchronisiert in ein weiteres Dataset zu kopieren, welches am Grid hängt.



kleiner Trick, für kurze Sync-Funktionen:
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
  ...
  Synchronize(procedure
    begin
      FormUsed.Update;
    end);
  ...
$2B or not $2B
  Mit Zitat antworten Zitat