Окно VS2010 Threads показывает 25 потоков и Процесс. Потоки. Количество 50
Каковы другие 25, делают?
Каждый раз, когда вы создаете поток в пользовательском коде, система создает соответствующий поток ядра. Мое предположение (хотя это, конечно, только предположение) состоит в том, что один из инструментов показывает количество только пользовательских потоков, а другой показывает количество как пользовательских потоков, так и потоков ядра.
Вероятно, пул потоков. Пул потоков создаст для вас кучу потоков, так что при их использовании вам не придется нести расходы на развертывание нового потока в этот момент.
Один из способов запустить что-то в пуле потоков - создать делегата и вызвать для него BeginInvoke. Например:
var a = new System.Action(() => { /* do work in the background! */ });
a.BeginInvoke(r => a.EndInvoke(r), null);
Тело действия будет выполнено в одном из этих потоков.