jajaja lo que me dio risa fue cuando no lo podian detener xD
Fijate que cuando se trabo que no se detenia fui a cambiar un codigo yo lo tenia ahi en la funcion de button1.click() asi
MiThread.Abort();
MiThread.Join();
Y cuando no se detenia lo cambie a lo que deje aqui ahorita
MiThread.Suspend();
Pero esa suspend() ya esta "deprecated" y en teoria se debe de usar abort() , pero como se quedo trabado lo cambie rapido. Pero ahorita que lo pruebo con abort y join funciona de maravilla, no me explico que fue lo que paso en ese momento jajaja.