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

3

我无法从控制台应用程序成功启动多个进程。

我有一个Visual Studio解决方案,其中包含一个控制台应用程序A,必须启动另一个控制台应用程序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的新实例,直到5个实例像A中指定的那样运行。

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


当您在VS之外运行A时,是否会得到相同的行为? - Blorgbeard
我刚刚测试了一下,立即获得了5个Test.exe实例。 - Blorgbeard
如果我在VS之外运行A,行为是不稳定的,有时会启动5个,有时会启动4个。然而,10秒后,它们都关闭了,一个新的B的单一实例弹出,再次在任务管理器中看到两个Test.exe进程,其中一个使用116K内存,另一个使用180,000K内存。 - Tokew
即使我从A中删除循环,只启动一个进程,我的任务管理器仍显示两个B实例正在运行,并且具有上述的内存使用情况。 - Tokew
程序 A 不应该等待任何东西,而是在启动 B 后继续执行。 - Tokew
1个回答

0

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

罪魁祸首可能是 Windows Phone SDK 或 Windows Azure for VS。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接