gpt4 book ai didi

c# - 创建进程 : error creating process handle

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:39 24 4
gpt4 key购买 nike

最近我一直在用 C# 开发一个应用程序,我正在使用 Mono 在 Linux 上运行它,我专门在 Debian 6 上进行测试。

2-8 小时后,应用程序不断显示警告,即 CreateProcess:创建进程句柄时出错。此警告之前已发布在多个单声道邮件列表上,包括单声道开发和单声道错误,单声道开发列表中的一个特定帖子是 http://mono.1490590.n4.nabble.com/Mono-CreateProcess-error-td1525870.html并且在其他几个地方也提到了警告。

我的应用程序每分钟至少创建 10 个进程,通常运行时间不到一秒/半秒,我还调用了 process.WaitForExit() 和 process.Dispose() 来尝试帮助规避其他电子邮件中建议的错误,并且正如我在 Google 上看到的那样,但不幸的是它没有帮助。

当错误发生时,它会导致无法创建任何 future 的进程。

我想知道是否有人有任何潜在的解决方案,它发生在 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);
}

很抱歉,如果有人问过这个问题,但我还没有找到可行的解决方案。

谢谢!

最佳答案

我认为您正在用尽文件句柄来与每个进程对话。

参见 here :

on 2009-09-06 08:59:10 UTC Joakim Sandström wrote:

Sorry for the double post.

This was resolved by creating a second loop, looping for HasExited. And then forcibly (try catch) running .Close on processes that had exited.

这对你有用吗?我相信调用 Process.Close() 会关闭打开的文件句柄。

关于c# - 创建进程 : error creating process handle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8781952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com