Hallo, im folgenden zeige ich eine Pseudo-Funktion die einen Thread startet, trotzdem friert das Programm ein, ich finde nicht meinen Fehler, fällt jemand auf was ich falsch mache dann bitte Hilfe!
Ziel sollte sein den Mainthread zu entlasten aber nach wie vor als eine Funktion zu arbeiten wenn im Hauptcode angesprochen (deswegen repeat schleife)
Delphi-Quellcode:
function TFormMain.Machwas ( Const Input : String ) : String;
var
tmp : String;
threadrun: boolean;
begin
threadrun := True;
TThread.CreateAnonymousThread(
procedure
var
IchBraucheDieseVars: Definitionen;
begin
tmp := '';
IchBraucheDieseVars := IrgendWas.Create;
try
tmp := IchBraucheDieseVars.GibMirEinenStringVonWoanders(Input);
finally
IchBraucheDieseVars.Free;
end;
threadrun := False
end
).Start;
repeat sleep(5) until not threadrun;
Result := tmp;
end;
edit
Mit einfrieren meine ich nicht dass das Programm abstürzt sondern hängen bleibt bis funktion fertig ist.
PS: Es friert auch nicht wegen hoher Cpu Last ein, die ist lächerlich gering.