Да, размер потока запуска определяется значением в заголовке файла .EXE.Обязательно, именно ОС создает поток, за до может выполняться любой код в программе.Он вызывает точку входа в программу CorExeMain ().
Используемый вами управляемый компилятор записывает это значение в заголовок файла EXE.Текущие компиляторы .NET выбирают 1 МБ, когда вы нацеливаетесь на x86 или любой процессор, 4 МБ, когда вы нацеливаетесь на x64.Однако это не исправлено, вы можете изменить значение с помощью утилиты Editbin.exe, параметра командной строки / STACK.Вы можете использовать это событие после сборки, чтобы получить стек размером 2 МБ:
set path=%path%;$(DevEnvDir);$(DevEnvDir)..\..\vc\bin
editbin.exe /STACK:2097152 "$(TargetPath)"
Размер стека для создаваемых вами потоков находится под вашим контролем, конструктор класса Thread имеет перегрузки , которыепозволяет указать размер.Вы не можете сделать его слишком маленьким, если обрезает значение до 256 КБ.Это необходимо, компилятор точно в срок также использует стек.