Para aplicaciones de consola, si se debe usar
CheckSynchronize
Lee la documentacion
Es necesario asignar el valor del metodo a
WakeMainThread El problema es que desde una aplicacion con interfaz grafica no deberias tocar esa variable, y usar TThread.Syncronize
Yo me replantearia el diseño