使用C#进程启动应用程序错误

本文关键字:应用程序 错误 启动 进程 使用 | 更新日期: 2023-09-27 18:26:46

我想在内存有限的情况下使用Process启动应用程序。我使用kernel32.dll中的AssignProcessToJobObject方法来完成它。我试图启动一个应用程序,该应用程序消耗10 MB的内存,内存限制为1 MB。但在启动后,我看到了一个对话框窗口,其中包含启动应用程序错误。我该怎么处理?

使用C#进程启动应用程序错误

MSDN文章《作业限制和通知》描述了如何获得超出限制的通知。

请注意,此通知不是终止进程,而必须由您自己完成。因为进程是由您的主管程序终止的,而不是由资源限制终止的,所以Windows不会弹出您试图避免的对话框。

如果您确实使用了导致进程立即终止的"硬"限制,您仍然可以检测到触发了资源限制。

作业对象记录其所有关联进程的基本会计信息,包括已终止的进程。要检索此会计信息,请使用QueryInformationJobObject函数。

但你无法避免操作系统提供的对话框,因为限制扼杀了进程。无论如何,这种核算似乎不适用于内存限制。因此,您应该使用通知方案。

请看一下JOBOBJECT_LIMIT_VIOLATION_INFORMATION结构。