Как правило, это не так.Когда вы вызываете BeginInvoke
для делегата, вы ставите в очередь выполнение асинхронного метода.
.NET Threadpool решит, когда и как выполнить ваш метод, основываясь на очереди работыэлементы, требующие обработки и имеющие максимальную пропускную способность, но, конечно, они не будут работать 500000 потоков параллельно.
Когда я опробовал ваш пример с 5-минутным сном и небольшим консольным сообщением в делегате, изначально работало только 8 потоков, затем медленно добавлялось больше.
Для хорошего объясненияо пуле потоков и асинхронных делегатах читайте эту статью .