Kill thread in una classe

Salve a tutti, tanto per cambiare, ho ancora una domanda sui threads.
Per terminare un thread in esecuzione normalmente uso un tag condiviso con l’ applicazione principale che se impostato a true indica al processo di terminare.
Quando ad esempio il programma viene chiuso usando la X della finestra, il thread non fa a tempo ad eseguire la chiusura.
Nel metodo destructor della classe ho provato ad inserire il comando Mythread.kill ma il comando non viene espletato.
Come posso eliminare i threads in esecuzione prima che l’ applicazione si chiuda anche in modo imprevisto ?

Prova a guardare qui
Magari trovi qualche spunto per risolvere il problema.

Grazie Antonio per l’ ottima guida sui thread che hai appena pubblicato.

Nei prossimi giorni metter in pratica i tuoi consigli.

Aggiornamento:
Dopo innumerevoli tentativi ho trovato una soluzione.
Non sar molto"pulita", ma funziona.
Nell’ evento Cancel Closing inserisco:

MyThread1.kill app.DoEvents(10) MyThread2.kill app.DoEvents(10) MyThread3.kill app.DoEvents(10)

Senza inserire “app.DoEvents” la finestra si blocca e non vengono chiusi tutti i threads.

Potresti anche provare qualcosa tipo:

while true if myThread1.state<>Thread.notRunning then myThread1.kill continue end if .... if myThread3.state<>Thread.notRunning then myThread3.kill continue end if wend