Segura para roscas em delphi

Eu tenho que modificar e alterar alguns componentes visuais em um segmento e, como você sabe, não é seguro fazer isso.

Minha pergunta écomo escrever um código completamente thread-safe? É possível? se for, por favor, pode me dar um exemplo simples?

meu código que não é threadsafe:

type
  tMyWorkerThread = class(TThread)
      public
         procedure Execute; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure tMyWorkerThread.Execute;
begin
  //codes
  //working with visual components
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TMyWorkerThread.Create(false);
end;

Obrigado.