0

我正在开始一个新的过程:

process.Start();

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

process.StartInfo.Arguments = ...

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

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

4

5 回答 5

3

看看内存映射文件——它们允许您在进程之间共享数据。

替代方案是常规文件、注册表、通过套接字进行通信等等。

于 2012-05-28T17:24:36.727 回答
2

如果数组很小,你可以只对它进行base64编码。其他选项包括将数据保存到文件或使用命名管道

于 2012-05-28T17:24:30.767 回答
0

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

于 2012-05-28T17:59:12.697 回答
0

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

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

于 2012-05-29T00:33:40.613 回答
0

您可能想使用匿名管道

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

于 2012-05-28T17:25:35.240 回答