Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fragen zu Threads: Prozedur als Thread ausführen (https://www.delphipraxis.net/28560-fragen-zu-threads-prozedur-als-thread-ausfuehren.html)

Whistler 26. Aug 2004 13:28


Fragen zu Threads: Prozedur als Thread ausführen
 
Hallo,

ich würde gerne eine Prozedur als Thread ausführen, damit die Anwendung selbst weiterhin reagiert.
Habe mir bereits das Tutorial von Luckie angeschaut, jedoch hilft es mir auch nicht viel weiter.

Jelly 26. Aug 2004 14:05

Re: Fragen zu Threads: Prozedur als Thread ausführen
 
Hallo,

deine Frage ist etwas vage: "Ich habe ein Problem, kann mir jemand helfen" spiegelt ungefähr den Inhalt deines Problems... Also was genau willst du denn in dem Thread machen?

Gruß,

Whistler 26. Aug 2004 14:12

Re: Fragen zu Threads: Prozedur als Thread ausführen
 
Hallo,

dachte der Titel des Themas würde das klar machen:
Wenn der User auf einen Button klickt, wird eine Prozedur ausgeführt. Diese Prozedur benötigt viel Zeit. Während des Vorgangs, reagiert aber die Hauptanwendung nicht mehr. Daher will ich diese Prozedur in einem extra Thread ausführen.

Quasi:
User klickt Button -> Thread "DoProcess" erstellen -> Thread Auzführen (hier wird die eigentliche Prozedur ausgeführt) -> Wenn Thread Fertig -> Thread Ende.

weißer Zwerg 26. Aug 2004 14:19

Re: Fragen zu Threads: Prozedur als Thread ausführen
 
Hallo,

zum Thema Threads einfach mal bei Threads Tutorial vorbeischauen. Für den Anfang hat es mit sehr geholfen.

MfG wZ

nailor 26. Aug 2004 14:28

Re: Fragen zu Threads: Prozedur als Thread ausführen
 
wo liegt den das problem? weil eigentlich zielt luckies tut genau darauf ab! wo kommst du nicht weiter?

Luckie 26. Aug 2004 14:28

Re: Fragen zu Threads: Prozedur als Thread ausführen
 
Wenn du eine konkrete Frage hast zu meinem Tutorial, was du nicht dabei verstanden hast, dann solltest du die auch stellen. Mit einem " jedoch hilft es mir auch nicht viel weiter" kann dir hier auch niemand weiterhelfen.

Pseudemys Nelsoni 26. Aug 2004 15:10

Re: Fragen zu Threads: Prozedur als Thread ausführen
 
hi whissi,

versuchs mal so:

Delphi-Quellcode:
procedure blub;
var
  i: integer;
begin
  for i := 0 to 1000000 do
    Form1.ListBox1.Items.Add(IntToStr(i));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  id: cardinal;
begin
  createthread(nil, 0, @blub, nil, 0, id);
end;

Luckie 26. Aug 2004 15:19

Re: Fragen zu Threads: Prozedur als Thread ausführen
 
Und genau so bitte nicht!

Erstmal sollte man niemals direkt MSDN-Library durchsuchenCreateThread aufrufen.
Zitat:

Zitat von Delphi Hilfe
BeginThread encapsulates the Win32 CreateThread API call, but unlike CreateThread, it sets the global IsMultiThread variable, thereby making the heap thread-safe.

Dann entspricht die Thread-Routine nicht der Vorgabe, wie eine Thread-Funktion auszusehen hat. Sollte zwar auch gehen, würde ich aber nicht empfehlen. Die sieht nämlich so aus:
Zitat:

Zitat von Delphi Hiilfe
Delphi-Quellcode:
type TThreadFunc = function(Parameter: Pointer): Integer;

Dann wird ohne ein Schutzblock auf globale, sichtbare Ressourcen der VCL zugegriffen:
Delphi-Quellcode:
Form1.ListBox1.Items.Add(IntToStr(i));
Sollte zwar auch gut gehen, kann aber auch böse ins Auge gegehen. Stichwort an dieser Stelle MSDN-Library durchsuchenCrtitcalSection oder für die Delphi Hilfe: Delphi-Referenz durchsuchenTCriticalSection.

Whistler 17. Sep 2004 18:21

Re: Fragen zu Threads: Prozedur als Thread ausführen
 
Ich blicke es nicht :/

Das PDF als solches ist verständlich. Jedoch hilft es mir nicht weiter. Ich weiß eben nicht, wie ich nun hingehe und einen Thread aufrufe, der eine Funktion/Prozedur abarbeitet.

Ich will eigentlich nur folgendes:
Durch eine Aktion auf dem Hauptformular (z.B. Button-Click), soll eine Prozedur in einem eigenen Thread ausgeführt werden (nur als Info: die auszuführende Prozedur erstellt eine HASH-Summe) und wenn die Prozedur durchgelaufen ist (=Hashsumme erstellt wurde), soll sich der Thread wieder beenden und das Hauptform wieder aktiv werden.

Meflin 17. Sep 2004 18:26

Re: Fragen zu Threads: Prozedur als Thread ausführen
 
wenn du die hauptform derweil deaktivierst, kannst du dir den thread auch sparen, denn dann ist er total überflüssig!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:26 Uhr.
Seite 1 von 3  1 23      

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