Thread is writing on desktop-Collection of common programming errors

I tried to make a runtime thread but the thread is behaving strangely, the code has no canvas reference.

procedure TBruteThread.Execute;
var
  j: Integer;
begin
  inherited;
  FreeOnTerminate:=True;
  for j:=1 to StrToInt(Form1.Edit1.Text) do begin
    if Terminated then break;
    Form1.Label2.Caption:=IntToStr(j);
  end;
  Form1.Label2.Caption:='Thread is destroyed';
  Self.Terminate;
end;

Someone have any idea to solve this strange problem?