【问题标题】:Communicate between 2 processes [duplicate]在2个进程之间进行通信[重复]
【发布时间】:2015-08-04 05:47:04
【问题描述】:

我正在尝试在 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;

【问题讨论】:

  • 取决于程序。您可以尝试从 Process 中读取流......
  • 您需要只从第一个进程到第二个进程进行通信还是反向通信?
  • 只从第一个到第二个进度
  • 谷歌搜索短语c# interprocess communication立即给了我这个result
  • 在这种情况下,一个简单的命令行参数不够吗?

标签: c#


【解决方案1】:

您有多种选择:

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

  • 如果您喜欢 REST,将会有客户端-服务器框架,例如自托管 ASP NET Web API 或 Nancy

  • 如果它非常简单,您可以只写入文件并从文件读取,并结合全局命名互斥锁来同步访问

  • 还可以选择内存映射文件,一个进程写入文件,另一个进程读取文件。这是一种有点怪异的方法,我很少看到它在使用中。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这是一个有趣的方法。你能举个例子吗?我有这种情况,我用 ProcessStartInfo 启动另一个进程。如果我不等待启动的进程退出,它也可以吗?
    猜你喜欢
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2020-02-20
    • 1970-01-01
    相关资源
    最近更新 更多