Originariamente inviato da ESSE-EFFE
Basandomi sul codice da te postato, la variabile esegui la utilizzi anche per terminare il thread. Quindi se anzichè controllare tale variabile all'interno della updateState utilizzi Terminated raggiungi esattamente lo stesso scopo (con la differenza che non aggiungeresti una variabile ridondante e non thread-safe nel programma).

Questo è fuorviante, oltre che sbagliato. Sempre ragionando sul tuo codice, se tu imposti esegui a false (oppure se richiami la Terminate) ed il tuo thread sta già eseguendo la Sleep (o comunque se il thread stesso non sta controllando il valore di esegui o di Terminated) il thread continuerà a fare quello che stava facendo.
Il terminate non lo chiamo mai direttamente e nel caso che tu hai menzionato si perde solo qualche secondo ma nulla di più.. cmq ho fatto dei test ed ho visto che fin ora questo è risultato il sistema più performante.

E poi una variabile membro del thread di tipo booleano non è di fatto thread-safe?
Di certo hai ragione a dire che è ritondante, ma per il momento è una necessità.

Sicuramente Farò tesoro dei tuoi consigli e vedo se riesco a rendere più corretto il codice dell'applicazione.

Grazie ancora.