Hallo liebe Community!
Kaum ist das eine Problem gelöst, schon taucht das nächste auf.
Und zwar bin ich auf der Suche nach einem guten Multithreading Tutorial.
Gefunden habe ich schon einiges, will jedoch TThread verwenden.
Die Aufgabe:
Ich habe eine Formularanwendung auf der sich ein Memo befindet sowie ein Start Button. Wenn ich auf Start klicke,
werden verschiedenste Funktionen und Prozeduren aufgerufen. Diese Prozeduren will ich jetzt als Thread laufen lassen.
Ich hätte mir das ungefähr so gedacht:
Delphi-Quellcode:
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Ani, FMX.Layouts, FMX.Gestures,
FMX.Memo, FMX.StdCtrls;
type
TForm1 =
class(TForm)
StyleBook1: TStyleBook;
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
type
TMyOwnThread =
class(TThread)
private
{ Private-Deklarationen }
protected
procedure Execute;
override;
public
{ Public-Deklarationen }
end;
procedure test;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure test;
var
i : Integer;
begin
i := 0;
while i <= 20
do begin
Form1.Memo1.Lines.Add(IntTostr(i));
i := i + 1;
end;
end;
procedure TMyOwnThread.Execute;
begin
try
Synchronize(test);
except
on e:
exception do begin
Showmessage(e.
Message);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
thread : TMyOwnThread;
begin
thread := TMyOwnThread.Create(False);
thread.WaitFor;
thread.Free;
end;
end.
Prinzipiell mal die Frage: Wäre das so in ungefähr korrekt?
und 2. gibt es die Möglichkeit eine Art "Write" funktion zu schreiben wie zB:
Delphi-Quellcode:
function write(msg : string) : String;
begin
Form1.Memo1.Lines.Add(msg);
end;
und diese aus dem Thread "Synchron" aufzurufen?
Vielen Dank im Voraus und sorry falls ich mich gerade blöd anstelle aber will hier nichts falsch machen ^^
LG