Cоздание и уничтожение потоков достаточно дорогостоящая операция. Для того чтобы избежать накладных расходов связанных с этим используют ThreadPool.
В пуле нас всегда ждет определенное известное CLR количество потоков готовых на выполнение задач. И именно поэтому почти все книги про .NET говорят, что для быстрого создания и выполнения потока ThreadPool.QueueUserWorkItem годится, а метод Start класса Thread нет.
System.Threading.ThreadPool.QueueUserWorkItem((o) => { // Some Work });
Рекомендуется использовать для исполнения небольшой работы, возникающей «здесь и сейчас».
Для обновления UI и выполнения работы в UI потоке непосредственно из ThreadPool, можно воспользоваться:
Dispatcher.BeginInvoke(() => { SomeList.ItemSource = null; });