Il metodo Terminate non serve per distruggere il thread, ma solamente per terminarlo qualora, all'interno del thread, si eseguano delle istruzioni ciclicamente, ad esempio
Invocare Terminate provoca l'impostazione del flag Terminated a True interrompendo il ciclo.codice:while not Terminated do begin // Do something... Sleep(0); end;
Nel caso in esame, ti trovi in una situazione diversa: all'interno del thread invochi un metodo che esegue un'operazione e si mette in attesa di un responso, entro un certo timeout; per interrompere quell'operazione, è la libreria per la connessione o il metodo utilizzato che deve dare la possibilità di svolgere quel processo in modo asincrono, verificando quindi con un ciclo lo stato dell'operazione stessa consentendo di annullarla in qualsiasi momento.
Con il tuo pulsante "Annulla", ottieni solamente un'interruzione del thread qualora questo tentasse ciclicamente, ad ogni timeout, di ricollegarsi.
La tua implementazione, pur non interrompendo la connessione con relativo timeout, è comunque utile per consentire all'interfaccia utente di rinfrescarsi.
Ciao!![]()