Moin...
Zitat:
Das wäre jetzt der ganze Code, dieser lässt sich auch compilieren.
... das wars dann auch schon.
Zitat:
Im Moment ist der Code noch nicht sinnvoll.
...meine ich auch.
Der ganze Workflow ist nicht schlüssig. Ein Programmablaufplan ist dir geläufig? (siehe Beispielbild) Damit solltest du anfangen.
Beispiel:
Was soll passiern wenn der Button3 mehrfach gedrückt wird? ...usw.
Zitat:
Ich hab in meiner Arbeit vor paar Tagen angefangen Delphi zu lernen.
Threads und deren Fallstricke, sind
imho nicht der geeignete Anfang.
Zitat:
Mein Chef hätte jetzt noch gerne das ich da mit Messages arbeite.
Ist im Prinzip eine Art von Syncronisierung. Ob ein Event mit Syncronize oder PostMessage ist nur in der Ausführung unterschiedlich. (synchron, asynchron)
Zitat:
Danke nochmal für die ganze Hilfe.
...du bist noch lange nicht fertig.
grobe Fehler:
1:
Form7.Memo1.Lines.Add('Thread Nr. 0 ' + DateTimeToStr(Now) + ' Uhr');
Wie ich schon gesagt habe, ein Zugriff auf die
GUI ist keine gute Idee!
http://www.delphipraxis.net/1386197-post54.html
2:
Delphi-Quellcode:
var
Form7: TForm7;
Thread1, Thread2, Thread3, Thread4, Thread5, Thread6: TMyThread;
ID, ThreadID: integer;
Globale Variablen in Verbindung mit Threads sind keine gute Idee!
https://forum.delphi-treff.de/index....len-Variablen/
3:
Delphi-Quellcode:
procedure TForm7.Button3Click(Sender: TObject);
begin
case ID of
0:
begin
Thread1.Terminate;
Thread1.WaitFor;
Thread1.Free;
end;
Beim Beenden des Threads über den Button wird er "abgeräumt"...nicht aber beim Beenden der Anwendung!
Einfügen: In die
DPR ReportMemoryLeaksOnShutdown := True;
und wundern.
4:
Delphi-Quellcode:
procedure TForm7.Timer1Timer(Sender: TObject);
begin
Timer1.interval := 6000;
end;
Was denkst du was da passiert?
Tipps (kein Muß):
1: Bitte Codeformatter benutzen. Wie in anderen Programmiersprachen auch...sprechende Namen verwenden.
2: Stelle dir mal vor das du 100 Threads hast? Wie sieht die USES aus? Schei...
Wie sehen die Proceduren aus? Schei...
Für so etwas gibt es Listen mit den Instanzen als Inhalt. Thread erstellen, ab in die Liste. Von dort holt man sich die Instanz in eine Variable. (z.B. CurrentThread)