Ja, ist die Größe für das Startgewinde durch einen Wert in den EXE-Datei-Header zu schaffen bestimmt wird. Unbedingt, es ist das Betriebssystem, das den Thread erstellt, vor beliebigen Code im Programm ausgeführt werden kann. Es ruft den Einstiegspunkt des Programms, CorExeMain().
Der verwaltete Compiler, den Sie verwenden, schreibt diesen Wert in den Header der EXE-Datei. Aktuelle .NET-Compiler wählen 1 MB, wenn Sie x86 oder Any CPU, 4 MB, wenn Sie x64 zielen. Dies ist jedoch nicht behoben, Sie können den Wert mit dem Editbin.exe-Dienstprogramm,/STACK Befehlszeilenoption ändern. Sie könnten diese Post-Build-Ereignis verwenden, um einen 2MB-Stack zu erhalten:
set path=%path%;$(DevEnvDir);$(DevEnvDir)..\..\vc\bin
editbin.exe /STACK:2097152 "$(TargetPath)"
die Stackgröße für Threads, die Sie selbst erstellen unter Ihrer Kontrolle sind, die Thread-Klasse Konstruktor has overloads, dass Sie die Größe festlegen können. Sie können es nicht zu klein machen, wenn der Wert auf 256 KB begrenzt wird. Das ist notwendig, der Just-in-Time-Compiler verwendet auch den Stack.
verwandt: http://stackoverflow.com/questions/1042345/how-do-you-change-default-stack-size-for-managed-executable-net –