CreateProcess:创建进程句柄时出错
本文关键字:出错 进程句柄 创建 CreateProcess | 更新日期: 2023-09-27 18:19:43
最近我在C#中开发了一个应用程序,并使用Mono在Linux上运行它,我专门在Debian 6上进行测试。
2-8小时后,应用程序不断显示警告,即CreateProcess:创建进程句柄时出错。这个警告以前已经发布在多个mono-devel邮件列表上,包括mono-dev和mono-bugs,mono-devels列表中的一个特定帖子是http://mono.1490590.n4.nabble.com/Mono-CreateProcess-error-td1525870.html在其他几个地方也谈到了这一警告。
我的应用程序每分钟至少创建10个进程,通常运行时间不到一秒半,我也称之为进程。WaitForExit()并处理。Dispose()试图帮助规避其他电子邮件中建议的错误,正如我在谷歌上看到的那样,但不幸的是,它没有帮助。
当错误发生时,将导致无法创建任何未来的进程。
我想知道是否有人有任何潜在的解决方案,它发生在2.10.2和2.10.6上。
我在这里看到了这个测试/示例案例:
http://lists.ximian.com/pipermail/mono-bugs/2009-September/092261.html
我把它粘贴在这里是为了方便使用:
System.Diagnostics.Process[] processes = new System.Diagnostics.Process[4096];
for (int i = 0; i < 4096; i++)
{
Console.WriteLine("Starting: " + i.ToString());
processes[i] = new System.Diagnostics.Process();
processes[i].StartInfo.FileName ="echo";
processes[i].StartInfo.Arguments = "'"hello mono '";";
processes[i].Start();
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.Threading.Thread.Sleep(10);
}
很抱歉再次问这个问题,如果已经问了,但我还没有找到一个有效的解决方案。
谢谢!
我认为您正在使用文件句柄来与每个进程进行对话。
请参阅此处:
2009年9月06日08:59:10 UTC Joakim Sandström写道:
抱歉有双重邮件。
这是通过创建第二个循环来解决的,该循环用于HasExited。然后强制(try-catch)运行。关闭已退出。
这对你有用吗?我相信调用Process.Close()
会关闭打开的文件句柄。