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