Process.Start()方法有问题

时间:2009-07-29 15:21:12

标签: c#-2.0 process mutex child-process

我有一个带有命令行参数的child.exe。我需要从另一个parent.exe应用程序启动该child.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()时,都会创建一个单独的exe。我只需要运行一个child.exe实例来接受不同的命令行参数。 任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:4)

当然,如果您想通过某种IPC传递现有流程的新参数,那么它将创建一个新流程。

答案 1 :(得分:0)

首先,您的子应用程序可以设置为使用Mutex来确保它只运行一次。

其次,您可能希望查看Remoting功能,以便您可以跨不同的流程进行通信,以达到您所期望的效果。

答案 2 :(得分:0)

或者将程序集动态加载到parent.exe进程并调用其中的方法。您甚至可以在隔离的AppDomain中执行此操作,如果child.exe是使用托管代码编写的,则可能是您真正想要的解决方案。看看这篇关于初学者的MSDN文章:

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

答案 3 :(得分:-4)

在代码中创建一个bat文件,它将包含你的参数。父exe将调用bat文件。在父结束后删除bat文件。