在编译大型可执行项目时,解决 VB6 冻结问题的方法是将 VB 应用程序的 CPU 核心限制为一个核心(即,将 VB6 进程的关联掩码设置为 1)。
请注意,仅当 VB6 进程以亲和力掩码设置为 1 启动时,这才对我有效,而不仅仅是在 VB 进程启动后强制执行亲和力掩码(在任务管理器中)。
要在关联掩码设置为 1 的情况下启动 VB6,请使用以下快捷方式(分别适用于 64 和 32 位操作系统)并以管理权限启动它:
C:\Windows\System32\cmd.exe /C start "VisualBasic6" /D "C:\Program Files (x86)\Microsoft Visual Studio\VB98" /AFFINITY 1 "C:\Program Files (x86)\Microsoft Visual Studio \VB98\VB6.EXE”
C:\Windows\System32\cmd.exe /C 启动 "VisualBasic6" /D "C:\Program Files\Microsoft Visual Studio\VB98" /AFFINITY 1 "C:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE ”
如果这不起作用,请尝试使用上述方法在 VB6 IDE 之外创建您的项目。例如,假设您需要在路径 C:\MyProjects\TestProj 中构建名为 testproj.vbp 的项目,请在提升的命令提示符中使用以下命令(分别适用于 64 位和 32 位操作系统):
启动“VisualBasic6”/D“C:\ Program Files(x86)\ Microsoft Visual Studio \ VB98”/ AFFINITY 1“C:\ Program Files(x86)\ Microsoft Visual Studio \ VB98 \ VB6.EXE”/ make“C: \MyProjects\TestProj\testproj.vbp" /outdir "C:\MyProjects\TestProj"
启动“VisualBasic6”/D“C:\ Program Files \ Microsoft Visual Studio \ VB98”/ AFFINITY 1“C:\ Program Files \ Microsoft Visual Studio \ VB98 \ VB6.EXE”/ make“C:\ MyProjects \ TestProj \ testproj .vbp" /outdir "C:\MyProjects\TestProj"
不幸的是,VB6 没有给出编译已完成的指示,因此您需要在任务管理器中跟踪 VB6 进程(当编译完成时,VB6 进程将终止)。
仅供参考,我在具有 2 个 Intel Xeon 四核 CPU 的 Windows Server 2012 上运行 VB。