我无法从控制台应用程序成功启动多个进程。
我有一个带有控制台应用程序A的Visual Studio解决方案,该应用程序必须启动另一个控制台应用程序(B)的多个实例。

B循环运行,以捕获过程参数指定的端口上的传入网络流量。

为了简化问题,我删除了所有网络逻辑,并使其尽可能地基本,但是我仍然遇到相同的问题。

A的代码,其中Test.exe是控制台应用程序B:

   static void Main(string[] args)
   {
        try
        {
            for (int i = 0; i < 5; i++)
            {

               System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo { FileName = "Test.exe" });

            }

        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }

    }


B代码:

    static void Main(string[] args)
    {
        int counter = 0;
        while (Console.KeyAvailable == false || Console.ReadKey().Key != ConsoleKey.Escape)
        {
            Console.WriteLine("" + counter);
            System.Threading.Thread.Sleep(1000);
            counter++;
        }
        Console.ReadLine();
    }


在Visual Studio调试中运行控制台应用程序A之后,A会按预期弹出,但B的只有一个窗口会弹出,并开始按照指定的数量进行计数。但是,如果查看任务管理器,我实际上可以看到两个Test.exe正在运行,其中一个正在使用116K内存,另一个正在使用180,000K内存。

一旦计数器达到15,它将关闭并打开两个新窗口,这两个窗口均从0开始计数。此行为继续,每次计数器达到15时打开B的新实例,直到按A中的指定运行5个实例。

显然,这种行为不是我想要的,我希望A立即启动B 5次(在此示例中),而不必等待进程退出。

最佳答案

重新安装.net并删除不再需要的某些功能之后,它终于可以按预期工作了。启动50个实例是没有问题的,并且奇怪的内存使用情况不再明显。

罪魁祸首是Windows Phone SDK或Windows Azure forVS。

关于c# - 无法启动多个进程(C#),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25370795/

10-12 12:44
查看更多