2009-07-29 3 views
0

У меня есть child.exe, который принимает аргументы командной строки. Мне нужно запустить этот child.exe из другого приложения parent.exe и передать различные аргументы командной строки этому child.exe. Я пробовал использовать следующий код.Проблема с методом Process.Start()

Process process = new Process(); 
     process.StartInfo.FileName = @"R:\bin\child.exe"; 
     process.StartInfo.Arguments = "CONSUMER"; 
     process.StartInfo.UseShellExecute = false; 
     process.StartInfo.RedirectStandardOutput = true; 
     process.StartInfo.CreateNoWindow = true; 
     process.Start(); 

process = new Process(); 
     process.StartInfo.FileName = @"R:\bin\child.exe"; 
     process.StartInfo.Arguments = "SUPERVISOR"; 
     process.StartInfo.UseShellExecute = false; 
     process.StartInfo.RedirectStandardOutput = true; 
     process.StartInfo.CreateNoWindow = true; 
     process.Start(); 

Но проблема в том, что каждый раз, когда я вызываю process.Start(), создается отдельный exe. Мне нужен только один экземпляр child.exe, который будет принимать разные аргументы командной строки. Любая помощь приветствуется.

ответ

4

Конечно, он собирается создать новый процесс, если вы хотите передать существующий процесс новым аргументам, с которыми вы лучше всего владеете каким-то IPC.

-4

в коде создать файл bat, который будет содержать ваши параметры. родительский exe вызовет файл bat. после того, как родительский конец удалит файл bat.

0

Во-первых, ваше дочернее приложение может быть настроено на использование Mutex, чтобы обеспечить его запуск только один раз.

Во-вторых, вы, вероятно, захотите заглянуть в функциональность Remoting, чтобы вы могли общаться в разных процессах, чтобы достичь эффекта, который вы ищете.

0

Или динамически загрузите сборку в процесс parent.exe и вызовите в ней метод. Вы даже можете сделать это в изолированном AppDomain, который (если child.exe написан в управляемом коде), скорее всего, будет решением, которое вы действительно хотите. Взгляните на эту статью MSDN для начинающих:

http://msdn.microsoft.com/en-us/library/6s0z09xw.aspx

Смежные вопросы