Hola, sólo añadir para
aoshishin1 (¡salud!), que la funcionalidad de Synchronize es semejante a la del evento OnIdle de la aplicación (o de un objeto TApplicationEvents), es decir, el código de interés es ejecutado por el hilo principal de la aplicación (como si el hilo alterno no existiese).
Synchronize tiene mayor utilidad cuando el método Execute del nuevo hilo realiza otras tareas en verdadero segundo plano. Así, las tareas que pueden no ser seguras para hilos (
thread-safe) se delegan al hilo principal a través de método Synchronize. Básicamente, las tareas no seguras para hilos son aquellas que afectan a regiones de memoria que varios hilos comparten, como puede ser cambiar o destruir un objeto al que instantes después otro hilo (como el principal) intentaría acceder.
Por otra parte, aunque sea algo sobrado para lo que busca aoshishin1, cabe mencionar que como alternativa a Synchronize está el uso de
secciones críticas.
Saludos cordiales.