Проблема с методом Process.Start () - PullRequest
0 голосов
/ 29 июля 2009

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

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 (), создается отдельный исполняемый файл. Мне нужен только один экземпляр child.exe, который будет принимать разные аргументы командной строки. Любая помощь приветствуется.

Ответы [ 4 ]

4 голосов
/ 29 июля 2009

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

0 голосов
/ 29 июля 2009

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

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

0 голосов
/ 29 июля 2009

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

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

0 голосов
/ 29 июля 2009

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

...