TCriticalsection hält nur andere Threads davon ab den selben Codeblock aufzurufen.
Innerhalb eines Threads ist der Mehrfachaufruf möglich, deshalb ist das hier keine Option.
Dafür reicht eine Variable, wie oben von mir vorgeschlagen.
Normalerweise würde man eine Steuerung die Tag und Nacht läuft auch nicht auf dem PC implementieren.
Dafür ist zum Beispiel Arduino besser geignet:
https://de.wikipedia.org/wiki/Arduino_(Plattform)
Der PC oder das Smartfone zeigt dann im einfachsten Fall nur die Webseite des Controllers an, über die man das Programm steuert.