Фестиваль с понижением голосов, я не решаюсь опубликовать. Но Хенрик прав, самый первый поток запускается Windows, когда он запускает EXE. Он выполняет всю работу, загрузка CLR является одной из его обязанностей. И он запускает метод Main () в вашей программе.
.NET Framework предоставляет очень мало возможностей для настройки этого потока. Только атрибуты [MTAThread] и [STAThread] в методе Main () имеют значение, они влияют на то, как CLR вызывает API-функцию CoInitializeEx ().
Размер стека потока фактически настраивается. Это одно из полей в формате файла PE32, формата, используемого в Windows для исполняемых образов. Обычно за создание этого файла отвечает компилятор C # или VB.NET, и у них нет возможности установить начальный размер стека потока. Немного недосмотра. Они используют значения по умолчанию, один мегабайт для 32-разрядного EXE, четыре мегабайта для 64-разрядного EXE (Platform Target = x64).
Изменение этого значения возможно, вы можете запустить утилиту Editbin.exe для изменения EXE-файла, используя параметр командной строки / STACK. Вы захотите сделать это на этапе после сборки. Помните, что это несовместимо со строгими именами или подписью с сертификатом, поскольку оно изменяет файл EXE.
Между прочим, это не проблема, если вам нужен поток с большим количеством стекового пространства, вы создаете его самостоятельно в методе Main ().