Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Threads nacheinander ausführen (https://www.delphipraxis.net/128570-threads-nacheinander-ausfuehren.html)

TheMiller 2. Feb 2009 08:23

Re: Threads nacheinander ausführen
 
Zitat:

wieso denn nicht eine Liste aller zu ladender Dateien EINEM Thread geben, welcher diese Liste dann selber nacheinander abarbeitet?
Das mache ich ja jetzt. Funktioniert auch prima. Wollte doch trotzdem aus Interesse nur wissen, wie man Threads nacheinander ausführt, zumal meiner nicht in das onTerminate reinspringt.

himitsu 2. Feb 2009 08:38

Re: Threads nacheinander ausführen
 
du bist auch sicher, daß dein .Execute komplett abgearbeitet wird?

TheMiller 2. Feb 2009 08:39

Re: Threads nacheinander ausführen
 
Ja.

TheMiller 2. Feb 2009 09:06

Re: Threads nacheinander ausführen
 
Also,

habe noch rausgefunden, dass der Thread immer hängen bleibt, sobald irgendwo "Synchronize" aufgerufen wird. Das verstehe ich nicht.

himitsu 2. Feb 2009 09:07

Re: Threads nacheinander ausführen
 
Zitat:

Zitat von DJ-SPM
Ja.

hmmm, ich verwende dieses TThread einfach nicht genug, aber wenn ich so in den Code seh, dann müßte es aufgerufen werden :gruebel:

PS: es gibt auch eine TThreadList (grad drüber gestolpert)

grad probiert ... bei mir geht's

Delphi-Quellcode:
type TMyThread = Class(TThread)
    protected
      procedure execute; override;
    end;

procedure TMyThread.execute;
  begin
    asm int 3 end;
    beep;
  end;

procedure TForm1.RunNextThread(Sender: TObject);
  begin
    asm int 3 end;
    beep;
  end;

procedure TForm1.FormCreate(Sender: TObject);
  begin
    asm int 3 end;
    with TMyThread.Create(true) do begin
      OnTerminate    := RunNextThread;
      FreeOnTerminate := True;
      Resume;
    end;
  end;
natürlich in D7 getestet (hast Glück, daß ich das noch drauf hab ^^)



Zitat:

Zitat von DJ-SPM
Also,

habe noch rausgefunden, dass der Thread immer hängen bleibt, sobald irgendwo "Synchronize" aufgerufen wird. Das verstehe ich nicht.

ok, das klärt es ... das OnTerminate wird auch per Synchronize im Hautthread ausgeführt.

Ist mit deinem Hauptthread alles in Ordnung?

TheMiller 2. Feb 2009 09:13

Re: Threads nacheinander ausführen
 
Vielen Dank. Das schau' ich mir gleich genauer an

Nochmal kurz zum Synchronize-Problem: Wenn ich es einfach weglasse und die Prozedur so aufrufe, dann funktioniert alles prima.

Hm. Der Hauptthread läuft ohne Probleme. Ich habe folgenden Aufbau:

Das Hauptprogramm wird geladen und sucht nach PlugIns (DLL-Forms). Dann sucht es nach Updates. Werden Updates gefunden und der User möchte diese laden, wird das Plugin "Updates" (auch eine DLL-Form) geladen und darin werden die Updates aufgelistet und daraus auch der UpdateThread gestartet. Hauptanwendung und Update-DLL-Form haben die Unit "Updater" in der Uses-Klausel, in der der Thread und die Update-Prozeduren verfügbar sind.

Aber das Funktioniert alles ohne Probleme und ohne MemLeaks (laut FastMM), ausgenommen von einer CriticalSection, die aus der IdHTTP-Komponente kommt.

alzaimar 2. Feb 2009 17:36

Re: Threads nacheinander ausführen
 
Zitat:

Zitat von himitsu
wieso denn nicht eine Liste aller zu ladender Dateien EINEM Thread geben, welcher diese Liste dann selber nacheinander abarbeitet?

Die Frage (Threadtitel lautet nicht, eine Liste von Dateien nacheinander zu laden, sondern wie man Threads nacheinander ausführt. Daher mein generischer Lösungsvorschlag.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz