如何与新进程共享信息(除了命令行参数)?

时间:2012-05-28 17:21:42

标签: c# .net visual-studio-2010 process

我正在开始一个新流程:

process.Start();

我知道我可以使用以下方法将字符串传递给它:

process.StartInfo.Arguments = ...

但我想分享的不仅仅是几个简单的字符串 - 字节数组等。我该怎么做?

编辑:这将作为ClickOnce应用程序安装,所以我真的不知道它将在文件系统中安装的位置,我希望尽可能简单,因此在卸载。那么我在哪里放这些数据呢?

5 个答案:

答案 0 :(得分:3)

看看memory mapped files - 它们允许您在进程之间共享数据。

替代方案是常规文件,注册表,通过sockets进行通信等。

答案 1 :(得分:2)

如果数组较小,您可以 base64 对其进行编码。其他选项包括将数据保存到文件或使用 named pipes

答案 2 :(得分:0)

您可能想要使用Anonymous Pipes

  

匿名管道提供的功能少于命名管道,但也是   需要更少的开销。您可以使用匿名管道进行制作   更容易在本地计算机上进行进程间通信。你不能使用   用于通过网络进行通信的匿名管道。

答案 3 :(得分:0)

您可以创建临时文件,将所有必需数据写入其中,并将结果文件名作为命令行参数发送。 当第二个应用程序运行时,它将读取文件的内容并将其删除。

答案 4 :(得分:0)

如果你可以正确编码字节数组(例如base64),你可以重定向目标进程的stdin并通过它传输:

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput.aspx