在两个进程之间进行通信

时间:2015-05-22 09:10:03

标签: c#

我正在尝试在2个程序之间进行通信,但我找不到如何。

Process p = Process.Start(Secondprogram.exe, "number = " + number);
p.WaitForExit();
this.Close();

我希望在第二个程序中收到该号码并在那里使用它。

或类似的东西:

Process p = Process.Start(Secondprogram.exe);
Parameter number = 1200;
p.WaitForExit();
this.Close();

然后在我的第二个项目中:

txtSomething.Text = number;

2 个答案:

答案 0 :(得分:3)

您有几种选择:

  • 使用WCF可以轻松切换绑定。因此,如果在同一台机器上有两个进程,则可以使用命名管道绑定,这是一种进程间通信。如果您以后决定将流程分离到不同的机器上,您只需将配置更改为 tcp绑定,一切都将继续工作

  • 如果您使用REST,则会有客户端 - 服务器框架,例如自托管的ASP NET Web API或Nancy

  • 如果它简单易懂,您只需写入文件并从文件中读取,并与全局命名的互斥锁结合以同步访问

  • 还可以选择内存映射文件,其中一个进程写入文件,另一个进程从中读取。这有点令人讨厌,我很少见到这个。

  • 或者另一种传统方法是使用第三方,例如数据库或消息队列系统

答案 1 :(得分:1)

您可以使用第一个程序的输出流作为第二个程序的输入流。检查ProcessStartInfo:https://msdn.microsoft.com/fr-fr/library/system.diagnostics.processstartinfo%28v=vs.110%29.aspx