use try-catch to catch the ThreadAbortException and do your clean up in the catch block.
There is nothing wrong with the way you use threads, but I though make you aware of the Task Parallel Library introduced in .NET 4.0.
Sacha Barber has written a series of articles about it here is the first one
Task Parallel Library: 1 of n[
^]