Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie gehen Threads? (https://www.delphipraxis.net/121474-wie-gehen-threads.html)

Larsi 28. Sep 2008 15:41


Wie gehen Threads?
 
Hi,
ich habe mir gerade schon ein Tutorial durchgelsen doch irgendwie kapier ich das alles nicht. Also ich habe eine Procedur in einem Button die sehr viele verschiedene Sachen macht. Wie kann ich die jetzt in einen Thread packen sodass die gesamte Anwendung nicht immer abstürtzt sobald man klickt wenn die Procedur gerade läuft. In meiner Button Procedur die dann durch den Thread ersetzt werden soll sind auch Variablen und so. Der Inhalt in dieser Prozedur bezieht sich auchb hauptsächlich auf andere Procdeduren die verwendet werden. Ich hoffe mir kann jemand ein gutes Beispiel geben.

MFG Lars Wiltfang

SirThornberry 28. Sep 2008 15:56

Re: Wie gehen Threads?
 
Im "Normalfall" kann ein Programm nur einwas zur gleichen zeit machen. Es wird also Zeile für Zeile abgearbeitet und erst wenn die eine Zeile abgearbeitet ist wird die nächste abgearbeitet.
Wenn du jetzt einen weiteren Thread erstellst kann an einer weiteren Stelle Anweisung für Anweisung nacheinander abgearbeitet werden.
Ein Quelltextbeispiel zu posten macht jetzt wenig sinn da es da genügend Tutorials gibt. Und wenn du da nicht durchblickst oder weiter kommst ist das einzig sinnvolle das du uns konkret sagst wo du nicht weiterkommst und uns alle nötigen Informationen gibst die notwendig sind um dir zu helfen. Aber ein einfaches "ich komme mit Threads nicht weiter trotz Tutorials" bringt rein gar nichts.

Larsi 28. Sep 2008 15:59

Re: Wie gehen Threads?
 
Mein erstes Problem ist schon das ich nicht weiß wo das hier hin muss:
Delphi-Quellcode:
type
  TMyOwnThread = class(TThread)
  protected
    procedure Execute; override;
  end;
Wenn ich das unter:

Delphi-Quellcode:
 TForm3 = class(TForm)

setzen will kommen ziemlich viele Fehler. Wo muss denn nun dieser Code hin in meiner Unit?

DeddyH 28. Sep 2008 16:01

Re: Wie gehen Threads?
 
Wie wäre es denn, mal einen Blick in die Demo zu werfen?

Larsi 28. Sep 2008 16:01

Re: Wie gehen Threads?
 
Welche Demo? Wo kann ich die downloaden?

DeddyH 28. Sep 2008 16:02

Re: Wie gehen Threads?
 
{Delphi}\Demos\DelphiWin32\VCLWin32\Threads

Larsi 28. Sep 2008 16:04

Re: Wie gehen Threads?
 
Wie {Delphi}? Meinst du C:\Progamme\Code Gear\Bds\5.0\ ? Da ist kein ORdner der Demos heißt.

DeddyH 28. Sep 2008 16:06

Re: Wie gehen Threads?
 
Komisch, bei mir schon, sowohl im TDE- als auch im D2007-Pfad.

Die Muhkuh 28. Sep 2008 16:11

Re: Wie gehen Threads?
 
Die Demos liegen bei mir auch total komisch. Bin aber selbst schuld, da ich bei der Installation vergessen habe, den richtigen Pfad einzutippen.

C:\Users\Public\Documents\RAD Studio

Hier liegen die bei mir.

Larsi 28. Sep 2008 16:11

Re: Wie gehen Threads?
 
Habs doch gefunden aber nur bei Tde. Heißt das jetzt das ein Thread immer eine eigene Unit braucht oder wie? Die demos helfen mir auch nicht weiter da das ja das über eine andere unit geht.

Die Muhkuh 28. Sep 2008 16:14

Re: Wie gehen Threads?
 
Ja, Threads brauchen immer eine eigene Unit :roll:

Kopf -> Wand...

DeddyH 28. Sep 2008 16:24

Re: Wie gehen Threads?
 
Zitat:

Zitat von Die Muhkuh
Ja, Threads brauchen immer eine eigene Unit

Sicher :?:

alzaimar 28. Sep 2008 16:26

Re: Wie gehen Threads?
 
Zitat:

Zitat von Larsi
...sodass die gesamte Anwendung nicht immer abstürtzt sobald man klickt wenn die Procedur gerade läuft...

Also das deine Anwendung abstürzt, kann auch ein Thread nicht verhindern.

alzaimar 28. Sep 2008 16:27

Re: Wie gehen Threads?
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von Die Muhkuh
Ja, Threads brauchen immer eine eigene Unit

Sicher :?:

Du hast im Quote seinen weißen Zusatz "Kopf->Wand" (schallendes Gelächter) nicht bemerkt. :roll:

thkerkmann 28. Sep 2008 16:27

Re: Wie gehen Threads?
 
Nö, nicht sicher:

z.B:

Delphi-Quellcode:
Unit Beispiel;

Interface
  ...
type
  tMyThread = class(tThread)
  ...
  end;

  tMyForm = class(tForm)
  ...
  end;

Implementation

 ...

end;

Gausi 28. Sep 2008 16:33

Re: Wie gehen Threads?
 
Ich bin mir nicht sicher, aber wäre hier vielleicht nicht erstmal ein einfaches Application.ProcessMessages an den richtigen Stellen eingestreut angebrachter? Ich vermute nämlich, das mit "Abstürzen" nur "reagiert nicht mehr" gemeint ist. Wenn man dann mit Threads rumfummelt, und das nicht anständig macht, dann stürzt die Anwendung nämlich wirklich ab. Nur so als Gedanke in eine andere Richtung. ;-)

Trotzdem sind Threads natürlich schöner.

Luckie 28. Sep 2008 18:54

Re: Wie gehen Threads?
 
Zitat:

Zitat von Larsi
ich habe mir gerade schon ein Tutorial durchgelsen

Welches hast du durchgelsen? Ichhabe noch das im Angebot: http://delphitutorials.michael-puff.de

Zitat:

Also ich habe eine Procedur in einem Button die sehr viele verschiedene Sachen macht. Wie kann ich die jetzt in einen Thread packen sodass die gesamte Anwendung nicht immer abstürtzt sobald man klickt wenn die Procedur gerade läuft.
Wie schon gesagt wurde, ein Abstürzen kann auch kein Thread verhinddern, nur ein "nicht reagieren". Im ersteren Fll solltest du den Fehler suhen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr.

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