Verwendest Du dabei die gleiche Variable FStart? Das mag funktionieren, weil das WaitFor ja unendlich wartet und da steht und solange mutmaßlich eh kein anderer Zugriff auf FStart stattfindet. Aber sauberer wäre
imho ein named event, jeweils getrennt angelegt. So verfahre ich in etlichen Threads, meistens um Pausen einzubauen, die bei Programmende aber durch den Event-Trigger den Thread sofort beenden lassen.
Genauso würde ich nicht INFINITE warten, sondern eine vordefinierte Zeit, und stattdessen den Rückgabewert auswerten (entweder Timeout oder gewünschtes Signal). So braucht das Programm halt maximal jene vordefinierte Zeit und der Thread muss nicht auf die harte Tour getötet werden.