C# 中有没有办法启动具有特定堆栈大小的进程?
最佳答案
投反对票的狂欢,我犹豫是否要发帖。但 Henrik 是对的,第一个线程是 Windows 在启动 EXE 时启动的。它完成了一大堆工作,加载 CLR 是它的职责之一。它会在您的程序中运行 Main() 方法。
.NET 框架提供了很少的选项来配置该线程。只有 Main() 方法上的 [MTAThread] 和 [STAThread] 属性有所不同,它们会影响 CLR 调用 CoInitializeEx() API 函数的方式。
线程的堆栈大小实际上是可配置的。它是 PE32 文件格式中的字段之一,PE32 文件格式是 Windows 中用于可执行镜像的格式。通常,C# 或 VB.NET 编译器负责生成该文件,但都没有设置初始线程堆栈大小的选项。有点疏忽。它们使用默认值,32 位 EXE 为 1 MB,64 位 EXE 为 4 MB(平台目标 = x64)。
可以更改该值,您可以运行 Editbin.exe 实用程序来修改 EXE 文件,使用/STACK 命令行选项。您需要在构建后步骤中执行此操作。请注意,这与强名称或使用证书签名不兼容,因为它会修改 EXE 文件。
顺便说一句,这并不是一个真正的问题,如果您需要一个具有大量堆栈空间的线程,那么您可以在 Main() 方法中自己创建一个线程。
关于c# - 具有一定堆栈大小的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2900918/