TCPserver sem evento OnExecute

Quero criar um servidor TCP e enviar / receber mensagem para os clientescomo necessári, não o evento OnExecute do TCPserve

Enviar / receber mensagem não é um problema; Eu gosto assim:

procedure TFormMain.SendMessage(IP, Msg: string);
var
  I: Integer;
begin
  with TCPServer.Contexts.LockList do
  try
    for I := 0 to Count-1 do
      if TIdContext(Items[I]).Connection.Socket.Binding.PeerIP = IP then
      begin
        TIdContext(Items[I]).Connection.IOHandler.WriteBuffer(Msg[1], Length(Msg));
        //  and/or Read 
        Break;
      end;
  finally
    TCPServer.Contexts.UnlockList;
  end;
end;

ota 1: Se eu não usar o OnExecute, o programa gera uma exceção quando um cliente se conect
ota 2: Se eu usar o OnExecute sem fazer nada, o uso da CPU será de% 100
ota 3: Não tenho chance de alterar os clientes TC

Então, o que eu deveria fazer

questionAnswers(10)

yourAnswerToTheQuestion