Как дофига то нафлудили
А любопытный вопрос все ж всплыл: про нативные потоки
Таки да, потоки CLR это отдельные сущности, которые работают поверх нативных, и могут с одного нативного потока на другой переползать. Можно конечно зафорсить привязку CLR-ного потока к нативному через Thread.BeginThreadAffinity() или делать поток c ThreadApartmentModel.SingleThreadApartment (в десктопных приложениях особенно)