无法启动多个进程(C#)

时间:2014-08-18 19:37:16

标签: c# process console

我无法从控制台应用程序成功启动多个进程。 我有一个带有控制台应用程序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次(在本例中)而不等待proccesses退出。

1 个答案:

答案 0 :(得分:0)

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

罪魁祸首是Windows Phone SDK或Windows Azure for VS.