Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#1

TThread, irgendwas mache ich falsch

  Alt 2. Mai 2018, 02:14
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.
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 2. Mai 2018 um 02:51 Uhr)
  Mit Zitat antworten Zitat