我无法从控制台应用程序成功启动多个进程。
我有一个带有控制台应用程序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/